Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | int64_t -> int | Chris Lattner | 2004-02-29 | 1 | -1/+1 | |
| | | | | llvm-svn: 11977 | |||||
* | Rename member function to be consistent with the rest. | Alkis Evlogimenos | 2004-02-27 | 2 | -4/+4 | |
| | | | | llvm-svn: 11898 | |||||
* | Make spiller push stores right after the definition of a register so | Alkis Evlogimenos | 2004-02-27 | 1 | -8/+33 | |
| | | | | | | that they are as far away from the loads as possible. llvm-svn: 11895 | |||||
* | Fix crash caused by passing register 0 to | Alkis Evlogimenos | 2004-02-27 | 1 | -1/+1 | |
| | | | | | | MRegisterInfo::isPhysicalRegister(). llvm-svn: 11894 | |||||
* | Clear maps right after basic block is processed. | Alkis Evlogimenos | 2004-02-26 | 1 | -4/+4 | |
| | | | | llvm-svn: 11892 | |||||
* | Uncomment assertions that register# != 0 on calls to | Alkis Evlogimenos | 2004-02-26 | 3 | -17/+23 | |
| | | | | | | | MRegisterInfo::is{Physical,Virtual}Register. Apply appropriate fixes to relevant files. llvm-svn: 11882 | |||||
* | No need to clear the map here, it will always be empty | Chris Lattner | 2004-02-26 | 1 | -1/+0 | |
| | | | | llvm-svn: 11868 | |||||
* | Fix bugs found with recent addition of assertions in | Alkis Evlogimenos | 2004-02-25 | 1 | -2/+2 | |
| | | | | | | MRegisterInfo::is{Physical,Virtual}Register. llvm-svn: 11849 | |||||
* | Great sparc renaming fallout IV: Sparc --> SparcV9. | Brian Gaeke | 2004-02-25 | 2 | -2/+2 | |
| | | | | llvm-svn: 11844 | |||||
* | Remove asssert since it is breaking cases that it shouldn't. | Alkis Evlogimenos | 2004-02-25 | 1 | -1/+0 | |
| | | | | llvm-svn: 11841 | |||||
* | Add DenseMap template and actually use it for for mapping virtual regs | Alkis Evlogimenos | 2004-02-25 | 3 | -36/+29 | |
| | | | | | | to objects. llvm-svn: 11840 | |||||
* | Add an assertion | Chris Lattner | 2004-02-25 | 1 | -0/+1 | |
| | | | | llvm-svn: 11830 | |||||
* | FunctionLiveVarInfo.h moved: include/llvm/CodeGen -> lib/Target/Sparc/LiveVar | Brian Gaeke | 2004-02-24 | 2 | -2/+2 | |
| | | | | llvm-svn: 11804 | |||||
* | Move machine code rewriter and spiller outside the register | Alkis Evlogimenos | 2004-02-24 | 3 | -143/+176 | |
| | | | | | | | | | | | allocator. The implementation is completely rewritten and now employs several optimizations not exercised before. For example for 164.gzip we have 997 loads and 699 stores vs the 1221 loads and 880 stores we have before. llvm-svn: 11798 | |||||
* | Add predicates for checking if a virtual register has a physical | Alkis Evlogimenos | 2004-02-24 | 1 | -0/+8 | |
| | | | | | | register mapping or a stack slot mapping. llvm-svn: 11795 | |||||
* | Make enum private as it is an implementation detail. | Alkis Evlogimenos | 2004-02-23 | 1 | -5/+5 | |
| | | | | llvm-svn: 11782 | |||||
* | Remove '4Virt' from member function names as it is obvious. | Alkis Evlogimenos | 2004-02-23 | 2 | -15/+15 | |
| | | | | llvm-svn: 11781 | |||||
* | Refactor VirtRegMap out of RegAllocLinearScan as the first part of bug | Alkis Evlogimenos | 2004-02-23 | 3 | -136/+195 | |
| | | | | | | 251 (providing a generic machine code rewriter/spiller). llvm-svn: 11780 | |||||
* | Add number of spilled registers statistic. | Alkis Evlogimenos | 2004-02-23 | 1 | -0/+2 | |
| | | | | llvm-svn: 11759 | |||||
* | Fix bugs in finegrainification | Chris Lattner | 2004-02-23 | 1 | -1/+3 | |
| | | | | llvm-svn: 11758 | |||||
* | Finegrainify namespacification | Chris Lattner | 2004-02-23 | 4 | -22/+12 | |
| | | | | llvm-svn: 11757 | |||||
* | Use MachineBasicBlock::getParent(). | Alkis Evlogimenos | 2004-02-23 | 1 | -2/+1 | |
| | | | | llvm-svn: 11756 | |||||
* | Remove implementation of default constructor as it is useless now. | Alkis Evlogimenos | 2004-02-23 | 1 | -5/+0 | |
| | | | | llvm-svn: 11755 | |||||
* | Refactor rewinding code for finding the first terminator of a basic | Alkis Evlogimenos | 2004-02-23 | 3 | -21/+14 | |
| | | | | | | | | | | | | block into MachineBasicBlock::getFirstTerminator(). This also fixes a bug in the implementation of the above in both RegAllocLocal and InstrSched, where instructions where added after the terminator if the basic block's only instruction was a terminator (it shouldn't matter for RegAllocLocal since this case never occurs in practice). llvm-svn: 11748 | |||||
* | Improved PhysRegTracker interface. RegAlloc lazily allocates the register ↵ | Alkis Evlogimenos | 2004-02-23 | 2 | -23/+21 | |
| | | | | | | tracker using a std::auto_ptr llvm-svn: 11738 | |||||
* | Simplify iterator usage now that we have next(). Also don't pass iterators ↵ | Alkis Evlogimenos | 2004-02-23 | 1 | -11/+7 | |
| | | | | | | by reference now that MachineInstr* are in an ilist llvm-svn: 11732 | |||||
* | Some code cleanups from Chris | Alkis Evlogimenos | 2004-02-23 | 1 | -9/+4 | |
| | | | | llvm-svn: 11724 | |||||
* | Fix comments in PhysRegTracker and rename isPhysRegAvail to isRegAvail to be ↵ | Alkis Evlogimenos | 2004-02-23 | 2 | -5/+6 | |
| | | | | | | consistent with the other two llvm-svn: 11723 | |||||
* | Move LiveIntervals.h up to be the first included header | Alkis Evlogimenos | 2004-02-23 | 1 | -1/+1 | |
| | | | | llvm-svn: 11721 | |||||
* | Pull PhysRegTracker out of RegAllocLinearScan as it can be used by other ↵ | Alkis Evlogimenos | 2004-02-23 | 2 | -59/+92 | |
| | | | | | | allocators as well llvm-svn: 11720 | |||||
* | Move LiveIntervals.h to lib/CodeGen since it shouldn't be exposed to other ↵ | Alkis Evlogimenos | 2004-02-23 | 3 | -2/+217 | |
| | | | | | | parts of the compiler llvm-svn: 11719 | |||||
* | Another bug fix for empty MBB's | Chris Lattner | 2004-02-22 | 1 | -1/+1 | |
| | | | | llvm-svn: 11716 | |||||
* | Fix a bug where we were implicitly assuming that there would be at least | Chris Lattner | 2004-02-22 | 1 | -2/+2 | |
| | | | | | | one terminator instruction in each basic block. llvm-svn: 11714 | |||||
* | Print basic block boundaries in machine instruction debug output. | Alkis Evlogimenos | 2004-02-22 | 2 | -4/+8 | |
| | | | | llvm-svn: 11704 | |||||
* | Abstract merging of ranges away from number of slots per instruction. | Alkis Evlogimenos | 2004-02-22 | 1 | -3/+7 | |
| | | | | | | | Also make it less aggressive as the current implementation breaks in some cases. llvm-svn: 11696 | |||||
* | Make 'fold' statistic's description the same in both allocators. | Alkis Evlogimenos | 2004-02-21 | 2 | -3/+4 | |
| | | | | llvm-svn: 11687 | |||||
* | Some more statistics improvements. | Alkis Evlogimenos | 2004-02-20 | 1 | -11/+17 | |
| | | | | llvm-svn: 11676 | |||||
* | Disambiguate statistic descriptions. | Alkis Evlogimenos | 2004-02-20 | 1 | -1/+1 | |
| | | | | llvm-svn: 11675 | |||||
* | Rename statistic and add another one. | Alkis Evlogimenos | 2004-02-20 | 1 | -3/+6 | |
| | | | | llvm-svn: 11674 | |||||
* | Fix crash in debug output. | Alkis Evlogimenos | 2004-02-20 | 1 | -1/+1 | |
| | | | | llvm-svn: 11659 | |||||
* | Fix instruction numbering in debug output. | Alkis Evlogimenos | 2004-02-20 | 1 | -1/+2 | |
| | | | | llvm-svn: 11655 | |||||
* | Too many changes in one commit: | Alkis Evlogimenos | 2004-02-20 | 2 | -167/+225 | |
| | | | | | | | | | | | | | | | | | | | | | | | | | | 1. LiveIntervals now implement a 4 slot per instruction model. Load, Use, Def and a Store slot. This is required in order to correctly represent caller saved register clobbering on function calls, register reuse in the same instruction (def resues last use) and also spill code added later by the allocator. The previous representation (2 slots per instruction) was insufficient and as a result was causing subtle bugs. 2. Fixes in spill code generation. This was the major cause of failures in the test suite. 3. Linear scan now has core support for folding memory operands. This is untested and not enabled (the live interval update function does not attempt to fold loads/stores in instructions). 4. Lots of improvements in the debugging output of both live intervals and linear scan. Give it a try... it is beautiful :-) In summary the above fixes all the issues with the recent reserved register elimination changes and get the allocator very close to the next big step: folding memory operands. llvm-svn: 11654 | |||||
* | Fix RA::verifyAssignment() | Alkis Evlogimenos | 2004-02-19 | 1 | -4/+8 | |
| | | | | llvm-svn: 11629 | |||||
* | Fix problem fusing spill code into instructions: we didn't update the live | Chris Lattner | 2004-02-19 | 1 | -0/+3 | |
| | | | | | | | variable information to take into account the change of instruction address. llvm-svn: 11628 | |||||
* | Fix an iterator invalidation problem. :( | Chris Lattner | 2004-02-19 | 1 | -2/+11 | |
| | | | | llvm-svn: 11627 | |||||
* | Add method to update livevar when an instruction moves | Chris Lattner | 2004-02-19 | 1 | -0/+34 | |
| | | | | llvm-svn: 11625 | |||||
* | Fix a __LONG__ term annoyance of mine: symbolic registers weren't being printed | Chris Lattner | 2004-02-19 | 1 | -6/+16 | |
| | | | | | | | by operator<< on MachineInstr's, and looking up what register "24" is all of the time was greatly annoying. llvm-svn: 11623 | |||||
* | Add a MachineBasicBlock::getParent() method | Chris Lattner | 2004-02-19 | 1 | -3/+7 | |
| | | | | llvm-svn: 11622 | |||||
* | Rename reloads/spills to loads/stores. | Alkis Evlogimenos | 2004-02-19 | 3 | -14/+14 | |
| | | | | llvm-svn: 11619 | |||||
* | Implement assignment correctness verification. | Alkis Evlogimenos | 2004-02-18 | 1 | -0/+15 | |
| | | | | llvm-svn: 11609 |