summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/LiveIntervalAnalysis.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Add implicit def / use operands to MachineInstr.Evan Cheng2006-11-101-8/+1
| | | | llvm-svn: 31633
* Remove redundant <cmath>.Jim Laskey2006-11-081-1/+0
| | | | llvm-svn: 31561
* Enable improved spilling costs by default. This speeds up viterbi on x86Chris Lattner2006-11-071-12/+7
| | | | | | | | by 40%, FreeBench/fourinarow by 20%, and many other programs 10-25%. On PPC, this speeds up fourinarow by 18%, and probably other things as well. llvm-svn: 31504
* Use correct value for float HUGH_VAL.Jim Laskey2006-11-071-4/+4
| | | | llvm-svn: 31500
* Add a new llcbeta option. This speeds up viterbi from 12.34 to 8.76s onChris Lattner2006-11-071-4/+19
| | | | | | X86. If happy, I'll enable this by default. llvm-svn: 31493
* Proper check for two-addressness.Evan Cheng2006-11-031-7/+22
| | | | llvm-svn: 31408
* For PR786:Reid Spencer2006-11-021-1/+1
| | | | | | | | | | 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
* Keep track of the start of MBB's in a separate map from instructions. ThisChris Lattner2006-09-151-38/+45
| | | | | | is faster and is needed for future improvements. llvm-svn: 30383
* Fix a long-standing wart in the code generator: two-address instruction loweringChris Lattner2006-09-051-42/+48
| | | | | | | | | | | | | | | actually *removes* one of the operands, instead of just assigning both operands the same register. This make reasoning about instructions unnecessarily complex, because you need to know if you are before or after register allocation to match up operand #'s with the target description file. Changing this also gets rid of a bunch of hacky code in various places. This patch also includes changes to fold loads into cmp/test instructions in the X86 backend, along with a significant simplification to the X86 spill folding code. llvm-svn: 30108
* Correct fix for a crasher on functions with live in valuesChris Lattner2006-09-041-4/+6
| | | | llvm-svn: 30099
* Hack around a regression I introduced yesterdayChris Lattner2006-09-041-0/+3
| | | | llvm-svn: 30098
* Avoid beating on the mi2i map when we know the answer already.Chris Lattner2006-09-031-12/+19
| | | | llvm-svn: 30066
* minor speedupChris Lattner2006-09-031-3/+3
| | | | llvm-svn: 30065
* Iteration is required for some cases, even if they don't occur in crafty.Chris Lattner2006-09-021-13/+24
| | | | | | Restore it, which re-fixes X86/2006-08-21-ExtraMovInst.ll llvm-svn: 30050
* When joining two intervals where the RHS is really simple, use a light-weightChris Lattner2006-09-021-11/+155
| | | | | | method for joining the live ranges instead of the fully-general one. llvm-svn: 30049
* Pull some code out of a hot recursive function because the common case doesn'tChris Lattner2006-09-011-6/+19
| | | | | | need recursion. llvm-svn: 30015
* Reserve space in the ValueNumberInfo vector. This speeds up live intervalChris Lattner2006-09-011-10/+10
| | | | | | | | analysis 16% on crafty. Wrap long lines. llvm-svn: 30012
* Iterative coallescing doesn't buy us anything (we get identical results onChris Lattner2006-09-011-24/+4
| | | | | | crafty with and without it). Removing it speeds up live intervals 6%. llvm-svn: 30010
* Add a special case that speeds up coallescing a bit, but not enough.Chris Lattner2006-08-311-51/+107
| | | | llvm-svn: 29996
* Delete copies as they are coallesced instead of waiting until the end.Chris Lattner2006-08-311-0/+4
| | | | llvm-svn: 29995
* avoid calling the virtual isMoveInstr method endlessly by caching its results.Chris Lattner2006-08-311-63/+61
| | | | llvm-svn: 29994
* Fix a compiler crash bootstrapping llvm-gcc.Chris Lattner2006-08-301-2/+6
| | | | llvm-svn: 29989
* Teach the coallescer to coallesce live intervals joined by an arbitraryChris Lattner2006-08-291-25/+190
| | | | | | | | 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
* Eliminate RegisterAnalysis. RegisterPass now does all that is necessary.Chris Lattner2006-08-271-1/+1
| | | | llvm-svn: 29921
* typo fixChris Lattner2006-08-271-3/+4
| | | | llvm-svn: 29910
* Simplifications to liveinterval analysis, no functionality change.Chris Lattner2006-08-261-26/+21
| | | | llvm-svn: 29896
* Completely change the way that joining with physregs is implemented. ThisChris Lattner2006-08-251-28/+32
| | | | | | | | 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
* Take advantage of the recent improvements to the liveintervals set (trackingChris Lattner2006-08-241-183/+237
| | | | | | | | | | | | | | | | | | | 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-16/+25
| | | | | | | defines each value# tracked by the interval. This will be used to improve coallescing. llvm-svn: 29830
* Print physreg names symbolically in dumpsChris Lattner2006-08-211-2/+3
| | | | llvm-svn: 29805
* Print debug info as:Chris Lattner2006-08-211-2/+5
| | | | | | | | | | | | | | | | *** Register mapping *** reg 1024 -> %reg1028 reg 1026 -> EAX reg 1027 -> %reg1028 instead of: *** Register mapping *** reg 1024 -> reg 1028 reg 1026 -> reg 15 reg 1027 -> reg 1028 llvm-svn: 29803
* Eliminate data relocations by using NULL instead of global empty list.Jim Laskey2006-07-211-2/+4
| | | | llvm-svn: 29250
* Reduce number of exported symbolsAndrew Lenharth2006-07-201-6/+6
| | | | llvm-svn: 29220
* Patches to make the LLVM sources more -pedantic clean. Patch providedChris Lattner2006-05-241-1/+1
| | | | | | by Anton Korobeynikov! This is a step towards closing PR786. llvm-svn: 28447
* Backing out fix for PR770. Need to re-apply it after live range splitting is ↵Evan Cheng2006-05-121-25/+13
| | | | | | possible llvm-svn: 28236
* Set weight of zero length intervals to infinite to prevent them from beingEvan Cheng2006-05-111-0/+19
| | | | | | spilled. llvm-svn: 28220
* PR 770 - permit coallescing of registers in subset register classes.Evan Cheng2006-05-091-13/+25
| | | | llvm-svn: 28197
* Move some methods out of MachineInstr into MachineOperandChris Lattner2006-05-041-3/+3
| | | | llvm-svn: 28102
* Remove previous patch, which wasn't quite right.Chris Lattner2006-05-011-3/+1
| | | | llvm-svn: 28039
* Local spiller kills a store if the folded restore is turned into a copy.Evan Cheng2006-04-301-3/+4
| | | | | | | | But this is incorrect if the spilled value live range extends beyond the current BB. It is currently controlled by a temporary option -spiller-check-liveout. llvm-svn: 28024
* Add explicit #includes of <iostream>Chris Lattner2006-01-221-0/+1
| | | | llvm-svn: 25515
* Minor cleanup, no functionality change for current targetsChris Lattner2006-01-101-1/+2
| | | | llvm-svn: 25173
* Change a variable from being an iterator to a raw MachineInstr*, to makeChris Lattner2006-01-031-12/+12
| | | | | | GDB use tolerable llvm-svn: 25064
* Fix some spello's pointed out by Gabor GreifChris Lattner2005-10-261-2/+2
| | | | llvm-svn: 24019
* Make the coallescer a bit smarter, allowing it to join more live ranges.Chris Lattner2005-10-211-30/+85
| | | | | | | | | | | | For example, we can now join things like [0-30:0)[31-40:1)[52-59:2) with [40:60:0) if the 52-59 range is defined by a copy from the 40-60 range. The resultant range ends up being [0-30:0)[31-60:1). This fires a lot through-out the test suite (e.g. shrinking bc from 19492 -> 18509 machineinstrs) though most gains are smaller (e.g. about 50 copies eliminated from crafty). llvm-svn: 23866
* Expose the LiveInterval interfaces as public headers.Chris Lattner2005-09-211-1/+1
| | | | llvm-svn: 23400
* remove debugging code *slaps head*Chris Lattner2005-09-091-1/+0
| | | | llvm-svn: 23294
* When spilling a live range that is used multiple times by one instruction,Chris Lattner2005-09-091-9/+26
| | | | | | | | only add a reload live range once for the instruction. This is one step towards fixing a regalloc pessimization that Nate notice, but is later undone by the spiller (so no code is changed). llvm-svn: 23293
* Fix a bug that Tzu-Chien Chiu noticed: live interval analysis does NOTChris Lattner2005-09-071-1/+0
| | | | | | preserve livevar llvm-svn: 23259
* Teach live intervals to not crash on dead livein regsChris Lattner2005-09-021-6/+11
| | | | llvm-svn: 23206
OpenPOWER on IntegriCloud