summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/LiveInterval.cpp
Commit message (Collapse)AuthorAgeFilesLines
* MergeValueInto is too smart: it might choose to do the merge the opposite ↵Owen Anderson2009-02-021-1/+3
| | | | | | | | | direction. Live interval reconstruction needs to account for this, and scour its maps to prevent dangling references. llvm-svn: 63558
* Exit with nice warnings when register allocator run out of registers.Evan Cheng2009-01-291-0/+10
| | | | llvm-svn: 63267
* Fix comment about removeRange.Evan Cheng2009-01-291-1/+1
| | | | llvm-svn: 63255
* Next round of earlyclobber handling. Approach theDale Johannesen2008-09-241-4/+0
| | | | | | | | | | RA problem by expanding the live interval of an earlyclobber def back one slot. Remove overlap-earlyclobber throughout. Remove earlyclobber bits and their handling from live internals. llvm-svn: 56539
* Remove AsmThatEarlyClobber etc. from LiveIntervalAnalysisDale Johannesen2008-09-191-0/+4
| | | | | | | and redo as linked list walk. Logic moved into RA. Per review feedback. llvm-svn: 56326
* Use empty() instead of begin() == end().Dan Gohman2008-08-141-1/+1
| | | | llvm-svn: 54780
* Instead of adding an isSS field to LiveInterval to denote stack slot. Use ↵Evan Cheng2008-06-231-2/+2
| | | | | | top bit of 'reg' instead. If the top bit is set, than the LiveInterval represents a stack slot live interval. llvm-svn: 52639
* Add a stack slot coloring pass. Not yet enabled.Evan Cheng2008-06-041-2/+18
| | | | llvm-svn: 51934
* Rename PrintableName to Name.Bill Wendling2008-02-261-1/+1
| | | | llvm-svn: 47629
* Change "Name" to "AsmName" in the target register info. Gee, a refactoring toolBill Wendling2008-02-261-1/+1
| | | | | | would have been a Godsend here! llvm-svn: 47625
* Update gcc 4.3 warnings fix patch with recent head changesAnton Korobeynikov2008-02-201-1/+2
| | | | llvm-svn: 47368
* - Removing the infamous r2rMap_ and rep() method. Now the coalescer will updateEvan Cheng2008-02-151-0/+21
| | | | | | | register defs and uses after each successful coalescing. - Also removed a number of hacks and fixed some subtle kill information bugs. llvm-svn: 47167
* - Added removeValNo() to remove all live ranges of a particular value#.Evan Cheng2008-02-131-7/+61
| | | | | | - removeRange() can now update value# information. llvm-svn: 47044
* Rename MRegisterInfo to TargetRegisterInfo.Dan Gohman2008-02-101-4/+5
| | | | llvm-svn: 46930
* Fixed a bug in MergeValueInAsValue() pointed out by David Greene. Replace ↵Evan Cheng2008-01-301-3/+3
| | | | | | val# with previous liverange's. llvm-svn: 46579
* remove dead #includeChris Lattner2008-01-141-1/+0
| | | | llvm-svn: 45971
* Remove attribution from file headers, per discussion on llvmdev.Chris Lattner2007-12-291-2/+2
| | | | llvm-svn: 45418
* Replace the odd kill# hack with something less fragile.Evan Cheng2007-11-291-1/+3
| | | | llvm-svn: 44434
* Kill info update bug.Evan Cheng2007-11-291-0/+3
| | | | llvm-svn: 44427
* Fix MergeValueInAsValue(). It allows overlapping live ranges but should replaceEvan Cheng2007-10-171-7/+57
| | | | | | their value numbers with the specified value number. llvm-svn: 43062
* When coalescing an EXTRACT_SUBREG and the dst register is a physical register,Evan Cheng2007-10-141-1/+1
| | | | | | | | the source register will be coalesced to the super register of the LHS. Properly merge in the live ranges of the resulting coalesced interval that were part of the original source interval to the live interval of the super-register. llvm-svn: 42961
* EXTRACT_SUBREG coalescing support. The coalescer now treats EXTRACT_SUBREG likeEvan Cheng2007-10-121-0/+37
| | | | | | | | | (almost) a register copy. However, it always coalesced to the register of the RHS (the super-register). All uses of the result of a EXTRACT_SUBREG are sub- register uses which adds subtle complications to load folding, spiller rewrite, etc. llvm-svn: 42899
* Constify to catch bugs.David Greene2007-09-061-2/+2
| | | | llvm-svn: 41751
* Fix a memory leak.Evan Cheng2007-09-061-0/+2
| | | | llvm-svn: 41739
* Use pool allocator for all the VNInfo's to improve memory access locality. ↵Evan Cheng2007-09-051-36/+18
| | | | | | This reduces coalescing time on siod Mac OS X PPC by 35%. Also remove the back ptr from VNInfo to LiveInterval and other tweaks. llvm-svn: 41729
* More tweaks to improve compile time.Evan Cheng2007-09-011-22/+35
| | | | llvm-svn: 41669
* Remove an unnecessary element, saving 4 bytes per LiveInterval.Evan Cheng2007-08-311-3/+0
| | | | llvm-svn: 41641
* Change LiveRange so it keeps a pointer to the VNInfo rather than an index.Evan Cheng2007-08-291-52/+78
| | | | | | | Changes related modules so VNInfo's are not copied. This decrease copy coalescing time by 45% and overall compilation time by 10% on siod. llvm-svn: 41579
* Recover most of the compile time regression due to recent live interval changes.Evan Cheng2007-08-281-27/+19
| | | | | | | | 1. Eliminate the costly live interval "swapping". 2. Change ValueNumberInfo container from SmallVector to std::vector. The former performs slowly when the vector size is very large. llvm-svn: 41536
* Kill info update bugs.Evan Cheng2007-08-141-1/+2
| | | | llvm-svn: 41064
* Kill info update bugs.Evan Cheng2007-08-131-5/+2
| | | | llvm-svn: 41043
* Code to maintain kill information during register coalescing.Evan Cheng2007-08-111-11/+32
| | | | llvm-svn: 41016
* Clean up and bug fix.Evan Cheng2007-08-081-1/+1
| | | | llvm-svn: 40921
* - Each val# can have multiple kills.Evan Cheng2007-08-081-6/+3
| | | | | | | - Fix some minor bugs related to special markers on val# def. ~0U means undefined, ~1U means dead val#. llvm-svn: 40916
* Remove a dead assertion.Evan Cheng2007-08-081-1/+0
| | | | llvm-svn: 40914
* - LiveInterval value#'s now have 3 components: def instruction #,Evan Cheng2007-08-071-7/+12
| | | | | | | | | | kill instruction #, and source register number (iff the value# is defined by a copy). - Now def instruction # is set for every value#, not just for copy defined ones. - Update some outdated code related inactive live ranges. - Kill info not yet set. That's next patch. llvm-svn: 40913
* Add a register allocation preference field; add a method to compute size of ↵Evan Cheng2007-04-171-0/+9
| | | | | | a live interval. llvm-svn: 36216
* Added an automatic cast to "std::ostream*" etc. from OStream. We then canBill Wendling2006-12-171-1/+1
| | | | | | | rework the hacks that had us passing OStream in. We pass in std::ostream* instead, check for null, and then dispatch to the correct print() method. llvm-svn: 32636
* The best unbreakage yet, addressing Bill's concerns.Jeff Cohen2006-12-161-3/+2
| | | | llvm-svn: 32622
* An even better unbreakage...Jeff Cohen2006-12-151-0/+7
| | | | llvm-svn: 32617
* Changed llvm_ostream et all to OStream. llvm_cerr, llvm_cout, llvm_null, areBill Wendling2006-12-071-4/+3
| | | | | | now cerr, cout, and NullStream resp. llvm-svn: 32298
* Converted to using llvm streams instead of <iostream>sBill Wendling2006-11-291-1/+1
| | | | llvm-svn: 31992
* Put the #include for a module first.Bill Wendling2006-11-281-1/+1
| | | | llvm-svn: 31958
* Changed to using llvm streams.Bill Wendling2006-11-281-5/+5
| | | | llvm-svn: 31954
* For PR786:Reid Spencer2006-11-021-1/+0
| | | | | | | | | | Turn on -Wunused and -Wno-unused-parameter. Clean up most of the resulting fall out by removing unused variables. Remaining warnings have to do with unused functions (I didn't want to delete code without review) and unused variables in generated code. Maintainers should clean up the remaining issues when they see them. All changes pass DejaGnu tests and Olden. llvm-svn: 31380
* When joining two intervals where the RHS is really simple, use a light-weightChris Lattner2006-09-021-0/+17
| | | | | | method for joining the live ranges instead of the fully-general one. llvm-svn: 30049
* avoid calling the virtual isMoveInstr method endlessly by caching its results.Chris Lattner2006-08-311-12/+12
| | | | llvm-svn: 29994
* Teach the coallescer to coallesce live intervals joined by an arbitraryChris Lattner2006-08-291-130/+59
| | | | | | | | number of copies, potentially defining live ranges that appear to have differing value numbers that become identical when coallsced. Among other things, this fixes CodeGen/X86/shift-coalesce.ll and PR687. llvm-svn: 29968
* Simplifications to liveinterval analysis, no functionality change.Chris Lattner2006-08-261-11/+15
| | | | llvm-svn: 29896
* Completely change the way that joining with physregs is implemented. ThisChris Lattner2006-08-251-7/+40
| | | | | | | | paves the way for future changes, increases coallescing opportunities (in theory, not witnessed in practice), and eliminates the really expensive LiveIntervals::overlapsAliases method. llvm-svn: 29890
OpenPOWER on IntegriCloud