Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | Under normal circumstances, when a frame pointer is not required, we reserve | Evan Cheng | 2007-05-01 | 1 | -17/+14 | |
| | | | | | | | | | | | | argument space for call sites in the function immediately on entry to the current function. This eliminates the need for add/sub sp brackets around call sites. However, this is not always a good idea. If the "call frame" is large and the target load / store instructions have small immediate field to encode sp offset, this can cause poor codegen. In the worst case, this can make it impossible to scavenge a register if the reserved spill slot is pushed too far apart from sp / fp. llvm-svn: 36607 | |||||
* | Match MachineFunction::UsedPhysRegs changes. | Evan Cheng | 2007-04-25 | 1 | -3/+2 | |
| | | | | llvm-svn: 36452 | |||||
* | support for >4G stack frames | Chris Lattner | 2007-04-25 | 1 | -1/+1 | |
| | | | | llvm-svn: 36425 | |||||
* | support > 4G stack objects | Chris Lattner | 2007-04-25 | 1 | -2/+2 | |
| | | | | llvm-svn: 36422 | |||||
* | Fix a bug introduced with my previous patch, where it didn't correctly handle | Chris Lattner | 2007-04-09 | 1 | -7/+9 | |
| | | | | | | | instructions which replace themselves when FI's are rewritten (common on ppc). This fixes CodeGen/PowerPC/2006-10-17-ppc64-alloca.ll llvm-svn: 35789 | |||||
* | Fix CodeGen/Generic/2007-04-08-MultipleFrameIndices.ll and PR1308: | Chris Lattner | 2007-04-09 | 1 | -1/+5 | |
| | | | | | | | some instructions can have multiple frame indices in them. If this happens, rewrite all of them. llvm-svn: 35785 | |||||
* | If target decides to create an emergency spill slot, make sure it's closest ↵ | Evan Cheng | 2007-03-06 | 1 | -7/+56 | |
| | | | | | | to SP or frame pointer. llvm-svn: 34965 | |||||
* | Delete register scavenger when done with it. | Evan Cheng | 2007-03-01 | 1 | -0/+2 | |
| | | | | llvm-svn: 34786 | |||||
* | Interface clean up. | Evan Cheng | 2007-03-01 | 1 | -1/+1 | |
| | | | | llvm-svn: 34772 | |||||
* | add a newline at end of file | Chris Lattner | 2007-02-28 | 1 | -0/+1 | |
| | | | | llvm-svn: 34735 | |||||
* | Make requiresRegisterScavenging determination on a per MachineFunction basis. | Evan Cheng | 2007-02-28 | 1 | -1/+1 | |
| | | | | llvm-svn: 34711 | |||||
* | MRegisterInfo disowns RegScavenger. It's immutable. | Evan Cheng | 2007-02-28 | 1 | -2/+2 | |
| | | | | llvm-svn: 34706 | |||||
* | Let MRegisterInfo now owns RegScavenger. | Evan Cheng | 2007-02-27 | 1 | -3/+3 | |
| | | | | llvm-svn: 34691 | |||||
* | forward() should not increment internal iterator. Its client may insert ↵ | Evan Cheng | 2007-02-27 | 1 | -1/+1 | |
| | | | | | | instruction between now and next forward() call. llvm-svn: 34649 | |||||
* | First potential client of register scavenger. | Evan Cheng | 2007-02-23 | 1 | -4/+13 | |
| | | | | llvm-svn: 34516 | |||||
* | Change the MachineDebugInfo to MachineModuleInfo to better reflect usage | Jim Laskey | 2007-01-26 | 1 | -3/+3 | |
| | | | | | | for debugging and exception handling. llvm-svn: 33550 | |||||
* | Added a MRegisterInfo hook that tells PEI the target is responsible for | Evan Cheng | 2007-01-25 | 1 | -2/+3 | |
| | | | | | | rounding the stack frame to a multiple of stack alignment. llvm-svn: 33504 | |||||
* | PEI is now responsible for adding MaxCallFrameSize to frame size and align ↵ | Evan Cheng | 2007-01-23 | 1 | -1/+16 | |
| | | | | | | the stack. Each target can further adjust the frame size if necessary. llvm-svn: 33460 | |||||
* | Remove an unused variable. | Evan Cheng | 2007-01-20 | 1 | -1/+0 | |
| | | | | llvm-svn: 33396 | |||||
* | We not align the final stack slot but instead let the target do so in ↵ | Evan Cheng | 2007-01-20 | 1 | -7/+0 | |
| | | | | | | emitPrologue(). Each target can make adjustments to the stack frame and re-align the stack as it deem appropriate. Do not align it twice which can end up wasting stack space. llvm-svn: 33387 | |||||
* | - Fixing naming inconsistency: calleesave -> calleesaved. | Evan Cheng | 2007-01-02 | 1 | -24/+30 | |
| | | | | | | - Make use of spillCalleeSavedRegisters() and restoreCalleeSavedRegisters(). llvm-svn: 32822 | |||||
* | Initialize {Min|Max}CSFrameIndex properly. | Evan Cheng | 2006-12-07 | 1 | -2/+4 | |
| | | | | llvm-svn: 32299 | |||||
* | TargetRegisterClass specifies the desired spill alignment. However, it ↵ | Evan Cheng | 2006-09-28 | 1 | -1/+6 | |
| | | | | | | cannot be honored if stack alignment is smaller. llvm-svn: 30648 | |||||
* | PEI now place callee save spills closest to the address pointed to by the | Evan Cheng | 2006-09-28 | 1 | -11/+67 | |
| | | | | | | | incoming stack. This allows X86 backend to use push / pop in epilogue / prologue. llvm-svn: 30636 | |||||
* | Rename function. It's determining which callee-save registers to save. | Evan Cheng | 2006-09-26 | 1 | -7/+7 | |
| | | | | llvm-svn: 30616 | |||||
* | s|llvm/Support/Visibility.h|llvm/Support/Compiler.h| | Chris Lattner | 2006-08-27 | 1 | -1/+1 | |
| | | | | llvm-svn: 29911 | |||||
* | Tidy up. | Jim Laskey | 2006-08-25 | 1 | -2/+4 | |
| | | | | llvm-svn: 29888 | |||||
* | Consolidate callee saved register information so that it can me used by debug | Jim Laskey | 2006-08-25 | 1 | -20/+21 | |
| | | | | | | information and exception handling. llvm-svn: 29881 | |||||
* | Shave another 27K off libllvmgcc.dylib with visibility hidden | Chris Lattner | 2006-06-28 | 1 | -1/+2 | |
| | | | | llvm-svn: 28973 | |||||
* | Remove dead variable | Chris Lattner | 2006-05-12 | 1 | -1/+0 | |
| | | | | llvm-svn: 28253 | |||||
* | Foundation for call frame information. | Jim Laskey | 2006-04-07 | 1 | -0/+6 | |
| | | | | llvm-svn: 27491 | |||||
* | The stack alignment is now computed dynamically, just verify it is correct. | Chris Lattner | 2006-04-03 | 1 | -1/+2 | |
| | | | | llvm-svn: 27380 | |||||
* | Always compute max align. | Chris Lattner | 2005-11-06 | 1 | -6/+5 | |
| | | | | llvm-svn: 24227 | |||||
* | Add the necessary support to the ISel to allow targets to codegen the new | Nate Begeman | 2005-11-06 | 1 | -3/+11 | |
| | | | | | | | | alignment information appropriately. Includes code for PowerPC to support fixed-size allocas with alignment larger than the stack. Support for arbitrarily aligned dynamic allocas coming soon. llvm-svn: 24224 | |||||
* | now that we have a reg class to spill with, get this info from the regclass | Chris Lattner | 2005-09-30 | 1 | -4/+3 | |
| | | | | llvm-svn: 23559 | |||||
* | Now that we have getCalleeSaveRegClasses() info, use it to pass the register | Chris Lattner | 2005-09-30 | 1 | -8/+11 | |
| | | | | | | class into the spill/reload methods. Targets can now rely on that argument. llvm-svn: 23556 | |||||
* | Change this code ot pass register classes into the stack slot spiller/reloader | Chris Lattner | 2005-09-30 | 1 | -2/+4 | |
| | | | | | | | code. PrologEpilogInserter hasn't been updated yet though, so targets cannot use this info. llvm-svn: 23536 | |||||
* | Fix a bug in my previous patch that was using the wrong iterator. This fixes | Chris Lattner | 2005-08-29 | 1 | -1/+1 | |
| | | | | | | Olden/bisort among others. llvm-svn: 23124 | |||||
* | Make this code safe for when loadRegFromStackSlot inserts multiple instructions. | Chris Lattner | 2005-08-26 | 1 | -1/+13 | |
| | | | | llvm-svn: 23108 | |||||
* | When inserting callee-save register reloads, make sure to skip over any | Chris Lattner | 2005-05-15 | 1 | -0/+8 | |
| | | | | | | | terminator instructions before the 'ret' in case the target has a multi-instruction return sequence. llvm-svn: 22041 | |||||
* | Tolerate instrs with extra args | Chris Lattner | 2005-05-13 | 1 | -1/+1 | |
| | | | | llvm-svn: 21982 | |||||
* | Remove trailing whitespace | Misha Brukman | 2005-04-21 | 1 | -12/+12 | |
| | | | | llvm-svn: 21420 | |||||
* | Simplify/speedup the PEI by not having to scan for uses of the callee saved | Chris Lattner | 2005-01-23 | 1 | -19/+5 | |
| | | | | | | | registers. This information is computed directly by the register allocator now. llvm-svn: 19795 | |||||
* | Speed this up a bit by making ModifiedRegs a vector<char> not vector<bool> | Chris Lattner | 2005-01-23 | 1 | -6/+5 | |
| | | | | llvm-svn: 19787 | |||||
* | Implicitly defined registers can clobber callee saved registers too! | Chris Lattner | 2005-01-22 | 1 | -0/+6 | |
| | | | | | | This fixes the return-address-not-being-saved problem in the Alpha backend. llvm-svn: 19741 | |||||
* | Add an assertion that would have made more sense to duraid | Chris Lattner | 2005-01-19 | 1 | -1/+3 | |
| | | | | llvm-svn: 19704 | |||||
* | Put this change back in after testing from Reid proved its innocence. ↵ | Nate Begeman | 2004-08-29 | 1 | -2/+2 | |
| | | | | | | getSpillSize now returns value in bits llvm-svn: 16102 | |||||
* | Back out change to divide getSpillSize by 8 until I figure out why it breaks ↵ | Nate Begeman | 2004-08-27 | 1 | -2/+2 | |
| | | | | | | x86, which has register sizes in bits. llvm-svn: 16073 | |||||
* | Register sizes are in bits, not bytes | Nate Begeman | 2004-08-27 | 1 | -2/+2 | |
| | | | | llvm-svn: 16070 | |||||
* | Register info alignment is in bits, frame object alignment is (currently) in | Chris Lattner | 2004-08-21 | 1 | -1/+1 | |
| | | | | | | bytes. llvm-svn: 15970 |