- Jan 24, 2012
-
-
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
-
Pete Cooper authored
Changed flag operand of ISD::FP_ROUND to TargetConstant as it should not get checked for legalisation llvm-svn: 148275
-
Lang Hames authored
llvm-svn: 148268
-
David Blaikie authored
Removing unused default switch cases in switches over enums that already account for all enumeration values explicitly. (This time I believe I've checked all the -Wreturn-type warnings from GCC & added the couple of llvm_unreachables necessary to silence them. If I've missed any, I'll happily fix them as soon as I know about them) llvm-svn: 148262
-
- Jan 16, 2012
-
-
Hal Finkel authored
AggressiveAntiDepBreaker needs to skip debug values because a debug value does not have a corresponding SUnit llvm-svn: 148260
-
Jakob Stoklund Olesen authored
It is safe to move uses of such registers. llvm-svn: 148259
-
Jakob Stoklund Olesen authored
llvm-svn: 148251
-
Jakob Stoklund Olesen authored
Register masks will be used as a compact representation of large clobber lists. Currently, an x86 call instruction has some 40 operands representing call-clobbered registers. That's more than 1kB of useless operands per call site. A register mask operand references a bit mask of call-preserved registers, everything else is clobbered. The bit mask will typically come from TargetRegisterInfo::getCallPreservedMask(). By abandoning ImplicitDefs for call-clobbered registers, it also becomes possible to share call instruction descriptions between calling conventions, and we can get rid of the WINCALL* instructions. This patch introduces the new operand kind. Future patches will add RegMask support to target-independent passes before finally the fixed clobber lists can be removed from call instruction descriptions. llvm-svn: 148250
-
David Blaikie authored
llvm-svn: 148230
-