- Jan 25, 2012
-
-
Chris Lattner authored
llvm-svn: 148897
-
Jakob Stoklund Olesen authored
A REG_SEQUENCE instruction is lowered into a sequence of partial defs: %vreg7:ssub_0<def,undef> = COPY %vreg20:ssub_0 %vreg7:ssub_1<def> = COPY %vreg2 %vreg7:ssub_2<def> = COPY %vreg2 %vreg7:ssub_3<def> = COPY %vreg2 The first def needs an <undef> flag to indicate it is the beginning of the live range, while the other defs are read-modify-write. Previously, we depended on LiveIntervalAnalysis to notice and fix the missing <def,undef>, but that solution was never robust, it was causing problems with ProcessImplicitDefs and the lowering of chained REG_SEQUENCE instructions. This fixes PR11841. llvm-svn: 148879
-
Jakob Stoklund Olesen authored
llvm-svn: 148878
-
- Jan 24, 2012
-
-
Jakob Stoklund Olesen authored
llvm-svn: 148825
-
Chris Lattner authored
llvm-svn: 148802
-
Evgeniy Stepanov authored
This change adds an new option --arm-enable-ehabi-descriptors that enables emitting unwinding descriptors. This provides a mode with a working backtrace() without the (currently broken) exception support. llvm-svn: 148800
-
Benjamin Kramer authored
16 bits are sufficient to store attributes, tags and forms. llvm-svn: 148799
-
Eric Christopher authored
Saves about 1.5% on debug info size. rdar://10278198 llvm-svn: 148794
-
Chris Lattner authored
and clean up some other misc stuff. Unlike ConstantArray, we will prefer to emit .fill directives for "String" arrays that all have the same value, since they are denser than emitting a .ascii llvm-svn: 148793
-
Jakob Stoklund Olesen authored
This won't have an effect until EliminateRegSequences() starts setting the undef flags. llvm-svn: 148779
-
Chandler Carruth authored
violation -- MC cannot depend on CodeGen. Specifically, the MCTargetDesc component of each target is actually a subcomponent of the MC library. As such, it cannot depend on the target-independent code generator, because MC itself cannot depend on the target-independent code generator. This change moved a flag from the ARM MCTargetDesc file ARMMCAsmInfo.cpp to the CodeGen layer in ARMException.cpp, leaving behind an 'extern' to refer back to it. That layering order isn't viable givin the constraints outlined above. Commandline flags are designed to be static specifically to avoid these types of bugs. Fixing this is likely going to require some non-trivial refactoring. llvm-svn: 148759
-
- Jan 23, 2012
-
-
Bill Wendling authored
llvm-svn: 148740
-
Lang Hames authored
llvm-svn: 148725
-
Jakob Stoklund Olesen authored
This fixes a typo in r148589. llvm-svn: 148724
-
Jakob Stoklund Olesen authored
llvm-svn: 148723
-
Evgeniy Stepanov authored
This change adds an new value to the --arm-enable-ehabi option that disables emitting unwinding descriptors. This mode gives a working backtrace() without the (currently broken) exception support. llvm-svn: 148686
-
- Jan 22, 2012
-
-
Anton Korobeynikov authored
llvm-svn: 148662
-
- Jan 21, 2012
-
-
Evan Cheng authored
llvm-svn: 148622
-
Jakob Stoklund Olesen authored
A register mask operand kills any live physreg that isn't preserved. Unlike an implicit-def operand, the clobbered physregs are never live afterwards. This means LiveVariables has to track a much smaller number of live physregs, and it should spend much less time in addRegisterDead(). llvm-svn: 148609
-
- Jan 20, 2012
-
-
Jakob Stoklund Olesen authored
llvm-svn: 148594
-
Jakob Stoklund Olesen authored
Only PostRA LICM is affected. llvm-svn: 148589
-
Jakob Stoklund Olesen authored
Don't track live physregs that are clobbered by a register mask operand. llvm-svn: 148588
-
David Blaikie authored
llvm-svn: 148578
-
Kostya Serebryany authored
Problem: LLVM needs more function attributes than currently available (32 bits). One such proposed attribute is "address_safety", which shows that a function is being checked for address safety (by AddressSanitizer, SAFECode, etc). Solution: - extend the Attributes from 32 bits to 64-bits - wrap the object into a class so that unsigned is never erroneously used instead - change "unsigned" to "Attributes" throughout the code, including one place in clang. - the class has no "operator uint64 ()", but it has "uint64_t Raw() " to support packing/unpacking. - the class has "safe operator bool()" to support the common idiom: if (Attributes attr = getAttrs()) useAttrs(attr); - The CTOR from uint64_t is marked explicit, so I had to add a few explicit CTOR calls - Add the new attribute "address_safety". Doing it in the same commit to check that attributes beyond first 32 bits actually work. - Some of the functions from the Attribute namespace are worth moving inside the class, but I'd prefer to have it as a separate commit. Tested: "make check" on Linux (32-bit and 64-bit) and Mac (10.6) built/run spec CPU 2006 on Linux with clang -O2. This change will break clang build in lib/CodeGen/CGCall.cpp. The following patch will fix it. llvm-svn: 148553
-
Bill Wendling authored
'insertvalue' instructions that recreate the structure returned by the 'landingpad' instruction. Because the 'insertvalue' instruction isn't supported by FastISel, this can save a bit of time during -O0 compilation. llvm-svn: 148520
-
- Jan 19, 2012
-
-
Evan Cheng authored
llvm-svn: 148465
-
Evan Cheng authored
llvm-svn: 148464
-
Evan Cheng authored
llvm-svn: 148462
-
Evan Cheng authored
to instruction right after the last instruction in the bundle. - Add a finalizeBundle() variant that doesn't specify LastMI. Instead, the code will find the last instruction in the bundle by following the 'InsideBundle' marker. This is useful in case bundles are formed early (i.e. during MI scheduling) but finalized later (i.e. after register allocator has finished rewriting virtual registers with physical registers). llvm-svn: 148444
-
Evan Cheng authored
llvm-svn: 148440
-
Jakob Stoklund Olesen authored
This SelectionDAG node will be attached to call nodes by LowerCall(), and eventually becomes a MO_RegisterMask MachineOperand on the MachineInstr representing the call instruction. LowerCall() will attach a register mask that depends on the calling convention. llvm-svn: 148436
-
- Jan 18, 2012
-
-
Lang Hames authored
llvm-svn: 148408
-
Nadav Rotem authored
Fix a bug in the type-legalization of vector integers. When we bitcast one vector type to another, we must not bitcast the result if one type is widened while the other is promoted. llvm-svn: 148383
-
Pete Cooper authored
Fix ISD::REG_SEQUENCE to accept physical registers and change TwoAddressInstructionPass to insert copies for any physical reg operands of the REG_SEQUENCE llvm-svn: 148377
-
- Jan 17, 2012
-
-
Nadav Rotem authored
llvm-svn: 148337
-
Craig Topper authored
llvm-svn: 148297
-
Andrew Trick authored
llvm-svn: 148291
-
Andrew Trick authored
Responding to code review. llvm-svn: 148290
-
Andrew Trick authored
More short term hackery until we have a way to configure passes that work on LiveIntervals. llvm-svn: 148289
-
Rafael Espindola authored
or clang bootstrap. I will keep an eye on the bots. Original message: Only emit the Leh_func_endN symbol when needed. llvm-svn: 148283
-