summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/LiveIntervalAnalysis.cpp
Commit message (Collapse)AuthorAgeFilesLines
* 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
* Simplify this code by using higher-level LiveVariables methodsChris Lattner2005-08-231-20/+10
| | | | llvm-svn: 22989
* Fix debug info to not print out recently freed memory.Chris Lattner2005-07-271-1/+1
| | | | llvm-svn: 22529
* Print symbolic register names in debug dumpsChris Lattner2005-07-271-2/+4
| | | | llvm-svn: 22528
* Print the symbolic register name in a register allocator debug dump.Chris Lattner2005-05-141-5/+5
| | | | llvm-svn: 22002
* allow a virtual register to be associated with live-in values.Chris Lattner2005-05-131-4/+4
| | | | llvm-svn: 21927
* Remove trailing whitespaceMisha Brukman2005-04-211-2/+2
| | | | llvm-svn: 21420
* there is no need to remove this instruction, linscan does it already as itChris Lattner2005-04-091-5/+0
| | | | | | removes noop moves. llvm-svn: 21183
* Adjust live intervals to support a livein setChris Lattner2005-04-091-2/+44
| | | | llvm-svn: 21182
* I didn't mean to check this in. :(Chris Lattner2005-03-101-3/+1
| | | | llvm-svn: 20555
* Allow the live interval analysis pass to be a bit more aggressive aboutChris Lattner2005-03-091-7/+53
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | numbering values in live ranges for physical registers. The alpha backend currently generates code that looks like this: vreg = preg ... preg = vreg use preg ... preg = vreg use preg etc. Because vreg contains the value of preg coming in, each of the copies back into preg contain that initial value as well. In the case of the Alpha, this allows this testcase: void "foo"(int %blah) { store int 5, int *%MyVar store int 12, int* %MyVar2 ret void } to compile to: foo: ldgp $29, 0($27) ldiq $0,5 stl $0,MyVar ldiq $0,12 stl $0,MyVar2 ret $31,($26),1 instead of: foo: ldgp $29, 0($27) bis $29,$29,$0 ldiq $1,5 bis $0,$0,$29 stl $1,MyVar ldiq $1,12 bis $0,$0,$29 stl $1,MyVar2 ret $31,($26),1 This does not seem to have any noticable effect on X86 code. This fixes PR535. llvm-svn: 20536
* Silence warnings from VSChris Lattner2005-01-081-2/+3
| | | | llvm-svn: 19386
* For PR387:\Reid Spencer2004-12-071-1/+1
| | | | | | | Make only one print method to avoid overloaded virtual warnings when \ compiled with -Woverloaded-virtual llvm-svn: 18589
* Reduce usage of MRegisterInfo::getRegClassChris Lattner2004-10-261-5/+6
| | | | llvm-svn: 17238
* Patch to support MSVC better, contributed by Morten OfstadChris Lattner2004-10-251-1/+1
| | | | llvm-svn: 17215
* When a virtual register is folded into an instruction, keep track of whetherChris Lattner2004-10-011-1/+1
| | | | | | | | it was a use, def, or both. This allows us to be less pessimistic in our analysis of them. In practice, this doesn't make a big difference, but it doesn't hurt either. llvm-svn: 16632
* Pretty print a bit nicer :)Chris Lattner2004-10-011-2/+1
| | | | llvm-svn: 16628
* There is no need to call MachineInstr::print directly, just send the MI& to ↵Chris Lattner2004-09-301-8/+11
| | | | | | an ostream. llvm-svn: 16613
* * Wrap some comments to 80 colsChris Lattner2004-09-301-30/+32
| | | | | | | | * Add const_iterator stuff * Add a print method, which means that I can now call dump() from the debugger. llvm-svn: 16612
OpenPOWER on IntegriCloud