- Jun 19, 2009
-
-
Evan Cheng authored
llvm-svn: 73734
-
- 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
-
Dale Johannesen authored
adding a check to catch this case at compile time instead of quietly generating incorrect code. That will at least let us identify CBE failures that are not due to this problem. llvm-svn: 73668
-
Bob Wilson authored
llvm-svn: 73665
-
Anton Korobeynikov authored
llvm-svn: 73661
-
Anton Korobeynikov authored
Emit switch directive for it. I have no idea whether this is requirement for Darwin or not. llvm-svn: 73660
-
- Jun 17, 2009
-
-
Anton Korobeynikov authored
Patch by Viktor Kutuzov and Anton Korzh from Access Softek, Inc. llvm-svn: 73622
-
Devang Patel authored
Do not use first actual instruction's location for prologue. The debug wants to skip prologue while setting a breakpoint for the function. llvm-svn: 73592
-
Chris Lattner authored
and its asmprinter. llvm-svn: 73573
-
- Jun 16, 2009
-
-
Douglas Gregor authored
initialization of all targets (InitializeAllTargets.h) or assembler printers (InitializeAllAsmPrinters.h). This is a step toward the elimination of relinked object files, so that we can build normal archives. llvm-svn: 73543
-
Evan Cheng authored
llvm-svn: 73536
-
Anton Korobeynikov authored
Dispatch C calling conv. to one of these conventions based on target triple and subtarget features. llvm-svn: 73530
-
Anton Korobeynikov authored
(this is the case when we have thumb vararg function with single callee-saved register, which is handled separately). llvm-svn: 73529
-
Sanjiv Gupta authored
llvm-svn: 73491
-
Sanjiv Gupta authored
llvm-svn: 73481
-
Eli Friedman authored
llvm-svn: 73476
-
Chris Lattner authored
llvm-svn: 73472
-
Chris Lattner authored
llvm-svn: 73471
-
Bill Wendling authored
llvm-svn: 73468
-
Bill Wendling authored
comes after the DW_CFA_def_cfa_register, because the CFA is really ESP from the start of the function and only gets an offset when the "subl $xxx,%esp" instruction happens, not the other way around. And reapply r72898: The DWARF unwind info was incorrect. While compiling with `-fomit-frame-pointer', we would lack the DW_CFA_advance_loc information for a lot of function, and then they would be `0'. The linker (at least on Darwin) needs to encode the stack size. In some cases, the stack size is too large to directly encode. So the linker checks to see if there is a "subl $xxx,%esp" instruction at the point where the `DW_CFA_def_cfa_offset' says the pc was. If so, the compact encoding records the offset in the function to where the stack size is embedded. But because the `DW_CFA_advance_loc' instructions are missing, it looks before the function and dies. So, instead of emitting the EH debug label before the stack adjustment operations, emit it afterwards, right before the frame move stuff. llvm-svn: 73465
-
Evan Cheng authored
llvm-svn: 73434
-
- Jun 15, 2009
-
-
Anton Korobeynikov authored
llvm-svn: 73428
-
Evan Cheng authored
llvm-svn: 73422
-
Bill Wendling authored
llvm-svn: 73417
-
Evan Cheng authored
llvm-svn: 73413
-
Bill Wendling authored
that push immediate operands of 1, 2, and 4 bytes (extended to the native register size in each case). The assembly mnemonics are "pushl" and "pushq." One such instruction appears at the beginning of the "start" function , so this is essential for accurate disassembly when unwinding." Patch by Sean Callanan! llvm-svn: 73407
-
Evan Cheng authored
llvm-svn: 73406
-
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
-
Chris Lattner authored
llvm-svn: 73373
-
Chris Lattner authored
llvm-svn: 73372
-
Chris Lattner authored
llvm-svn: 73366
-
Dan Gohman authored
llvm-svn: 73362
-
- Jun 14, 2009
-
-
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
-
-
Sanjiv Gupta authored
The subprogram descriptor for a function may be missing (llvm-ld linking two static functions with same name), so pick up the compilation unit for the function from the first valid debug loc of its instructions. This patch also emits debug info for structure (aggregate types in general) types. llvm-svn: 73295
-
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
-
- Jun 12, 2009
-
-
Evan Cheng authored
llvm-svn: 73252
-
Arnold Schwaighofer authored
out of sync with regular cc. The only difference between the tail call cc and the normal cc was that one parameter register - R9 - was reserved for calling functions through a function pointer. After time the tail call cc has gotten out of sync with the regular cc. We can use R11 which is also caller saved but not used as parameter register for potential function pointers and remove the special tail call cc on x86-64. llvm-svn: 73233
-
Eli Friedman authored
add a few suggestions from looking at some assembly code. llvm-svn: 73210
-
Bruno Cardoso Lopes authored
llvm-svn: 73209
-