summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/PrologEpilogInserter.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Speed this up a bit by making ModifiedRegs a vector<char> not vector<bool>Chris Lattner2005-01-231-6/+5
| | | | llvm-svn: 19787
* Implicitly defined registers can clobber callee saved registers too!Chris Lattner2005-01-221-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 duraidChris Lattner2005-01-191-1/+3
| | | | llvm-svn: 19704
* Put this change back in after testing from Reid proved its innocence. ↵Nate Begeman2004-08-291-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 Begeman2004-08-271-2/+2
| | | | | | x86, which has register sizes in bits. llvm-svn: 16073
* Register sizes are in bits, not bytesNate Begeman2004-08-271-2/+2
| | | | llvm-svn: 16070
* Register info alignment is in bits, frame object alignment is (currently) inChris Lattner2004-08-211-1/+1
| | | | | | bytes. llvm-svn: 15970
* Now that we have per-register spill size/alignment info, remove more usesChris Lattner2004-08-211-4/+5
| | | | | | of getRegClass llvm-svn: 15967
* Stop using CreateStackObject(RegClass*)Chris Lattner2004-08-151-1/+1
| | | | llvm-svn: 15775
* These methods no longer take a TargetRegisterClass* operand.Chris Lattner2004-08-151-6/+3
| | | | llvm-svn: 15774
* Make this compile on gc 3.4.1 (static_cast to non-const type was notAlkis Evlogimenos2004-08-151-2/+2
| | | | | | allowed). llvm-svn: 15766
* Elminiate MachineFunction& argument from eliminateFrameIndexNate Begeman2004-08-141-1/+1
| | | | llvm-svn: 15736
* Split saveCallerSavedRegisters into two methods for clarity, and add comments.Chris Lattner2004-08-121-9/+52
| | | | | | | | Add support for targets that must spill certain physregs at certain locations. Patch contributed by Nate Begeman, slightly hacked by me. llvm-svn: 15701
* Ok get rid of the REST of the tabsChris Lattner2004-08-071-11/+11
| | | | llvm-svn: 15564
* Death to tabsChris Lattner2004-08-071-14/+14
| | | | llvm-svn: 15563
* Fix fallout from getOffsetOfLocalArea() being negated. Debugging dumps were ↵Chris Lattner2004-06-111-2/+2
| | | | | | | | | being printed incorrectly, and we were reserving 8 extra bytes of stack space for functions on X86. llvm-svn: 14152
* Fix the prolog epilog code inserter to match the documentation and supportChris Lattner2004-06-101-9/+33
| | | | | | | | targets whose stack grows up. Patch contributed by Vladimir Prus llvm-svn: 14111
* Adjust to new TargetMachine interfaceChris Lattner2004-06-021-4/+4
| | | | llvm-svn: 13956
* Make dense maps keyed on physical registers smallerusingAlkis Evlogimenos2004-02-151-1/+1
| | | | | | | | | | MRegisterInfo::getNumRegs() instead of MRegisterInfo::FirstVirtualRegister. Also use MRegisterInfo::is{Physical,Virtual}Register where appropriate. llvm-svn: 11477
* Allow for fixed objects to reside in the local area, and if they don't to notChris Lattner2004-02-151-6/+13
| | | | | | clobber them by allocating other objects in the same space! llvm-svn: 11454
* There is no reason to align the stack pointer if there are no callees of ↵Chris Lattner2004-02-141-2/+5
| | | | | | this function! llvm-svn: 11449
* Change MachineBasicBlock's vector of MachineInstr pointers into anAlkis Evlogimenos2004-02-121-12/+13
| | | | | | | | | ilist of MachineInstr objects. This allows constant time removal and insertion of MachineInstr instances from anywhere in each MachineBasicBlock. It also allows for constant time splicing of MachineInstrs into or out of MachineBasicBlocks. llvm-svn: 11340
* Do not use MachineOperand::isVirtualRegister either!Chris Lattner2004-02-101-5/+5
| | | | llvm-svn: 11283
* Eliminate users of MachineOperand::isPhysicalRegisterChris Lattner2004-02-101-1/+2
| | | | llvm-svn: 11278
* Change interface of MachineOperand as follows:Alkis Evlogimenos2003-12-141-2/+1
| | | | | | | | | | | | | | | a) remove opIsUse(), opIsDefOnly(), opIsDefAndUse() b) add isUse(), isDef() c) rename opHiBits32() to isHiBits32(), opLoBits32() to isLoBits32(), opHiBits64() to isHiBits64(), opLoBits64() to isLoBits64(). This results to much more readable code, for example compare "op.opIsDef() || op.opIsDefAndUse()" to "op.isDef()" a pattern used very often in the code. llvm-svn: 10461
* Put all LLVM code into the llvm namespace, as per bug 109.Brian Gaeke2003-11-111-0/+5
| | | | llvm-svn: 9903
* Added LLVM project notice to the top of every C++ source file.John Criswell2003-10-201-0/+7
| | | | | | Header files will be on the way. llvm-svn: 9298
* Change MRegisterDesc::AliasSet, TargetInstrDescriptor::ImplicitDefsAlkis Evlogimenos2003-10-081-3/+6
| | | | | | | | | | | | | | | | | | | | | and TargetInstrDescriptor::ImplicitUses to always point to a null terminated array and never be null. So there is no need to check for pointer validity when iterating over those sets. Code that looked like: if (const unsigned* AS = TID.ImplicitDefs) { for (int i = 0; AS[i]; ++i) { // use AS[i] } } was changed to: for (const unsigned* AS = TID.ImplicitDefs; *AS; ++AS) { // use *AS } llvm-svn: 8960
* Factory methods for FunctionPasses now return type FunctionPass *.Brian Gaeke2003-08-131-1/+1
| | | | llvm-svn: 7823
* (1) Added special register class containing (for now) %fsr.Vikram S. Adve2003-05-271-1/+2
| | | | | | | | | | | | | Fixed spilling of %fcc[0-3] which are part of %fsr. (2) Moved some machine-independent reg-class code to class TargetRegInfo from SparcReg{Class,}Info. (3) Renamed MachienOperand::opIsDef to MachineOperand::opIsDefOnly() and related functions and flags. Fixed several bugs where only "isDef" was being checked, not "isDefAndUse". llvm-svn: 6341
* Fix a bug which occurred with empty basic blocksChris Lattner2003-05-021-1/+1
| | | | llvm-svn: 5982
* Fix problems with empty basic blocksChris Lattner2003-01-161-1/+1
| | | | llvm-svn: 5326
* Arg, fix bugs in previous checkin...Chris Lattner2003-01-161-2/+2
| | | | llvm-svn: 5322
* Add assertionChris Lattner2003-01-161-2/+5
| | | | llvm-svn: 5321
* * Insert prolog/epilog code before rewriting indexesChris Lattner2003-01-151-23/+23
| | | | | | * Fix calculation of frame offsets when there is an offset. llvm-svn: 5318
* Rename MachineInstrInfo -> TargetInstrInfoChris Lattner2003-01-141-5/+5
| | | | llvm-svn: 5272
* Convert to MachineFunctionPassChris Lattner2003-01-131-7/+6
| | | | llvm-svn: 5218
* Rename FunctionFrameInfo to MachineFrameInfoChris Lattner2002-12-281-3/+3
| | | | llvm-svn: 5200
* Rename MachineFrameInfo to TargetFrameInfo.hChris Lattner2002-12-281-1/+1
| | | | llvm-svn: 5199
* Initial checkin of Prolog/Epilog code inserter, which is an important partChris Lattner2002-12-281-0/+247
of the abstract frame representation llvm-svn: 5198
OpenPOWER on IntegriCloud