- Jun 24, 2009
-
-
Lang Hames authored
Fixed a bug in LiveInterval scaling (failure to scale VNI defs correctly), removed old TODO comments. llvm-svn: 74054
-
Evan Cheng authored
Fix support for inline asm input / output operand tying when operand spans across multiple registers (e.g. two i64 operands in 32-bit mode). llvm-svn: 74053
-
- Jun 23, 2009
-
-
Bruno Cardoso Lopes authored
Only pad when the section size > 0 and move the code that deals with globals initializers to a place we know for sure the global is initialized. llvm-svn: 73944
-
- Jun 22, 2009
-
-
Dale Johannesen authored
types for the target (I think). This was breaking the PPC32 calling sequence. llvm-svn: 73900
-
Evan Cheng authored
Fix another register coalescer crash: forgot to check if the instruction being updated has already been coalesced. llvm-svn: 73898
-
Bruno Cardoso Lopes authored
llvm-svn: 73895
-
Bruno Cardoso Lopes authored
Support for .text relocations, implementing TargetELFWriter overloaded methods for x86/x86_64. Use a map to track global values to their symbol table indexes Code cleanup and small fixes llvm-svn: 73894
-
- Jun 20, 2009
-
-
Evan Cheng authored
llvm-svn: 73816
-
Devang Patel authored
llvm-svn: 73786
-
- Jun 19, 2009
-
-
Devang Patel authored
llvm-svn: 73784
-
Eli Friedman authored
taking so long to get to this! llvm-svn: 73757
-
Lang Hames authored
llvm-svn: 73750
-
Chris Lattner authored
llvm-svn: 73738
-
Chris Lattner authored
llvm-svn: 73736
-
Lang Hames authored
llvm-svn: 73727
-
- Jun 18, 2009
-
-
Evan Cheng authored
On Darwin, ams printer should output a second label before a jump table so the linker knows it's a new atom. But this is only needed if the jump table is put in a separate section from the function body. llvm-svn: 73720
-
Evan Cheng authored
- Update register allocation hint after coalescing. This is done by the target since the hint is target dependent. This is important for ARM register pair hints. - Register allocator should resolve the second part of the hint (register number) before passing it to the target since it knows virtual register to physical register mapping. - More fixes to get ARM load / store double word working. llvm-svn: 73671
-
- Jun 17, 2009
-
-
Lang Hames authored
llvm-svn: 73634
-
- Jun 16, 2009
-
-
Sanjiv Gupta authored
llvm-svn: 73483
-
Sanjiv Gupta authored
llvm-svn: 73480
-
Evan Cheng authored
llvm-svn: 73479
-
Evan Cheng authored
If a val# is defined by an implicit_def and it is being removed, all of the copies off the val# were removed. This causes problem later since the scavenger will see uses of registers without defs. The proper solution is to change the copies into implicit_def's instead. TurnCopyIntoImpDef turns a copy into implicit_def and remove the val# defined by it. This causes an scavenger assertion later if the def reaches other blocks. Disable the transformation if the value live interval extends beyond its def block. llvm-svn: 73478
-
Eli Friedman authored
support for x86, and UMULO/SMULO for many architectures, including PPC (PR4201), ARM, and Cell. The resulting expansion isn't perfect, but it's not bad. llvm-svn: 73477
-
Bill Wendling authored
llvm-svn: 73464
-
Devang Patel authored
llvm-svn: 73457
-
Owen Anderson authored
Owen Anderson 2009-06-15: Remember to clear out our maps to prevent crashing. llvm-svn: 73438
-
Dan Gohman authored
unsupported inline asm construct, rather than verifying a code invariant. llvm-svn: 73435
-
- Jun 15, 2009
-
-
Devang Patel authored
llvm-svn: 73426
-
Evan Cheng authored
llvm-svn: 73423
-
Arnold Schwaighofer authored
incomming chain of the RETURN node. The incomming chain must be the outgoing chain of the CALL node. This causes the backend to identify tail calls that are not tail calls. This patch fixes this. llvm-svn: 73387
-
Evan Cheng authored
- Change register allocation hint to a pair of unsigned integers. The hint type is zero (which means prefer the register specified as second part of the pair) or entirely target dependent. - Allow targets to specify alternative register allocation orders based on allocation hint. Part 2. - Use the register allocation hint system to implement more aggressive load / store multiple formation. - Aggressively form LDRD / STRD. These are formed *before* register allocation. It has to be done this way to shorten live interval of base and offset registers. e.g. v1025 = LDR v1024, 0 v1026 = LDR v1024, 0 => v1025,v1026 = LDRD v1024, 0 If this transformation isn't done before allocation, v1024 will overlap v1025 which means it more difficult to allocate a register pair. - Even with the register allocation hint, it may not be possible to get the desired allocation. In that case, the post-allocation load / store multiple pass must fix the ldrd / strd instructions. They can either become ldm / stm instructions or back to a pair of ldr / str instructions. This is work in progress, not yet enabled. llvm-svn: 73381
-
Dan Gohman authored
llvm-svn: 73362
-
- Jun 14, 2009
-
-
Evan Cheng authored
Move register allocation preference (or hint) from LiveInterval to MachineRegisterInfo. This allows more passes to set them. llvm-svn: 73346
-
Bruno Cardoso Lopes authored
Introduce new BinaryObject (blob) class, ELF Writer modified to use it. BinaryObject.h by Aaron Gray llvm-svn: 73333
-
- Jun 13, 2009
-
-
Evan Cheng authored
consecutive addresses togther. This makes it easier for the post-allocation pass to form ldm / stm. This is step 1. We are still missing a lot of ldm / stm opportunities because of register allocation are not done in the desired order. More enhancements coming. llvm-svn: 73291
-
Devang Patel authored
llvm.dbg.region.end() intrinsic is not required to be in _last_ basic block in a function. If that happens then any basic block that follows (lexically) the block with regin.end will not have scope info available. LexicalScopeStack relies on processing basic block in CFG order, but this processing order is not guaranteed. Things get complicated when the optimizer gets a chance to optimizer IR with dbg intrinsics. Apply defensive patch to preserve at least one lexical scope till the end of function. llvm-svn: 73282
-
Owen Anderson authored
llvm-svn: 73258
-
- Jun 12, 2009
-
-
Owen Anderson authored
llvm-svn: 73257
-
Owen Anderson authored
llvm-svn: 73256
-
Evan Cheng authored
If killed register is defined by implicit_def, do not clear it since it's live range may overlap another def of same register. llvm-svn: 73255
-