summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/LiveInterval.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* 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
* When replacing value numbers, make sure to compactify the value # space.Chris Lattner2006-08-241-0/+12
| | | | llvm-svn: 29865
* Take advantage of the recent improvements to the liveintervals set (trackingChris Lattner2006-08-241-8/+83
| | | | | | | | | | | | | | | | | | | instructions which define each value#) to simplify and improve the coallescer. In particular, this patch: 1. Implements iterative coallescing. 2. Reverts an unsafe hack from handlePhysRegDef, superceeding it with a better solution. 3. Implements PR865, "coallescing" away the second copy in code like: A = B ... B = A This also includes changes to symbolically print registers in intervals when possible. llvm-svn: 29862
* Improve the LiveInterval class to keep track of which machine instructionChris Lattner2006-08-221-1/+15
| | | | | | | defines each value# tracked by the interval. This will be used to improve coallescing. llvm-svn: 29830
* Fix LiveInterval::getOverlapingRanges to take things in the right orderChris Lattner2005-10-211-3/+3
| | | | | | | | | | (an unused method). Fix the merger so that it can merge ranges like this [10:12)[16:40) with [12:38) into [10:40) instead of bogus ranges. This sort of input will be possible for the merger coming shortly llvm-svn: 23865
* Fix a conditional so we don't access past the end of the range. Thanks toChris Lattner2005-10-201-6/+4
| | | | | | Andrew for bringing this to my attn. llvm-svn: 23850
* Fix order of eval problem from when I refactored this into a function.Chris Lattner2005-10-201-3/+2
| | | | llvm-svn: 23844
* add a new method, play around with some code.Chris Lattner2005-10-201-10/+56
| | | | | | | | Fix a *bug* in the extendIntervalEndTo method. In particular, if adding [2:10) to an interval containing [0:2),[10:30), we produced [0:10),[10,30). Which is not the most smart thing to do. Now produce [0:30). llvm-svn: 23841
* Refactor some code, pulling it out into a function. No functionality change.Chris Lattner2005-10-201-15/+26
| | | | llvm-svn: 23839
* Expose the LiveInterval interfaces as public headers.Chris Lattner2005-09-211-1/+1
| | | | llvm-svn: 23400
* Print the symbolic register name in a register allocator debug dump.Chris Lattner2005-05-141-11/+17
| | | | llvm-svn: 22002
* Remove trailing whitespaceMisha Brukman2005-04-211-2/+2
| | | | llvm-svn: 21420
* Prevent accessing past the end of the intervals vector, this fixesChris Lattner2004-12-041-1/+3
| | | | | | Prolang-C/bison in the JIT llvm-svn: 18477
* There is no need to check to see if j overflowed in this loop as we're onlyChris Lattner2004-11-181-1/+3
| | | | | | incrementing i. llvm-svn: 17944
* Moderate head scratching reveals that this conditional is not needed. IfChris Lattner2004-11-181-4/+0
| | | | | | i->start == j->start, then certainly i->end > j->start. llvm-svn: 17943
* Take another .7 seconds off of linear scan time.Chris Lattner2004-11-181-3/+5
| | | | llvm-svn: 17936
* Add ability to give hints to the overlaps routines.Chris Lattner2004-11-181-5/+13
| | | | llvm-svn: 17934
* Give a better message for a common assertion failure.Brian Gaeke2004-11-161-1/+2
| | | | llvm-svn: 17887
* Fix includes. Patch contributed by Paolo Invernizzi!Alkis Evlogimenos2004-09-281-0/+1
| | | | llvm-svn: 16533
OpenPOWER on IntegriCloud