summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/LiveIntervalAnalysis.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* 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
* Grow the map on entry so that we don't crash if joinIntervals neverAlkis Evlogimenos2004-09-091-2/+1
| | | | | | runs (if coalescing is disabled for example). llvm-svn: 16259
* Use a DenseMap for mapping reg->reg. This improves the LiveIntervalAlkis Evlogimenos2004-09-081-3/+5
| | | | | | analysis running time from 2.7869secs to 2.5226secs on 176.gcc. llvm-svn: 16244
* Order #includes alphabetically, local .h files first.Misha Brukman2004-09-031-3/+2
| | | | llvm-svn: 16153
* Fixes to make LLVM compile with vc7.1.Alkis Evlogimenos2004-09-031-0/+1
| | | | | | Patch contributed by Paolo Invernizzi! llvm-svn: 16152
* Changes For Bug 352Reid Spencer2004-09-011-4/+4
| | | | | | | | Move include/Config and include/Support into include/llvm/Config, include/llvm/ADT and include/llvm/Support. From here on out, all LLVM public header files must be under include/llvm/. llvm-svn: 16137
* Minor code clarity changes.Alkis Evlogimenos2004-08-311-4/+6
| | | | llvm-svn: 16123
* Only update LiveVariables if it is available. addIntervalsForSpillsAlkis Evlogimenos2004-08-271-9/+12
| | | | | | runs after the initial run of the live interval analysis. llvm-svn: 16075
* Use newly added API in MRegisterInfo.Alkis Evlogimenos2004-08-261-5/+4
| | | | llvm-svn: 16060
* Fix a bug in a previous checkin of mine, correctingChris Lattner2004-08-241-1/+1
| | | | | | | | | Regression.CodeGen.Generic.2004-04-09-SameValueCoalescing.llx and the code size problem. This bug prevented us from doing most register coallesces. llvm-svn: 16031
* Reduce usage of MRegisterInfo::getRegClassChris Lattner2004-08-151-1/+1
| | | | llvm-svn: 15784
* Clean up whitespace.Alkis Evlogimenos2004-08-041-15/+14
| | | | llvm-svn: 15490
* Convert indentation to 2 spaces.Alkis Evlogimenos2004-08-041-412/+411
| | | | llvm-svn: 15489
* Fix the sense of joinableChris Lattner2004-07-251-1/+1
| | | | llvm-svn: 15196
* Fix a bug where we incorrectly value numbered the first PHI definition theChris Lattner2004-07-251-3/+26
| | | | | | | | same as the PHI use. This is not correct as the PHI use value is different depending on which branch is taken. This fixes espresso with aggressive coallescing, and perhaps others. llvm-svn: 15189
* Add debugging output for joining assignmentsChris Lattner2004-07-251-0/+5
| | | | llvm-svn: 15187
* Change std::map<unsigned, LiveInterval*> into a std::map<unsigned,Alkis Evlogimenos2004-07-241-10/+5
| | | | | | | LiveInterval>. This saves some space and removes the pointer indirection caused by following the pointer. llvm-svn: 15167
* whoops, didn't mean to remove thisChris Lattner2004-07-241-1/+3
| | | | llvm-svn: 15157
* Completely eliminate the intervals_ list. instead, the r2iMap_ maintainsChris Lattner2004-07-241-35/+28
| | | | | | ownership of the intervals. llvm-svn: 15155
* Big change to compute logical value numbers for each LiveRange added to anChris Lattner2004-07-241-125/+151
| | | | | | | | | | | | | | | | | | | | | | | | | Interval. This generalizes the isDefinedOnce mechanism that we used before to help us coallesce ranges that overlap. As part of this, every logical range with a different value is assigned a different number in the interval. For example, for code that looks like this: 0 X = ... 4 X += ... ... N = X We now generate a live interval that contains two ranges: [2,6:0),[6,?:1) reflecting the fact that there are two different values in the range at different positions in the code. Currently we are not using this information at all, so this just slows down liveintervals. In the future, this will change. Note that this change also substantially refactors the joinIntervalsInMachineBB method to merge the cases for virt-virt and phys-virt joining into a single case, adds comments, and makes the code a bit easier to follow. llvm-svn: 15154
* More minor changes:Chris Lattner2004-07-231-41/+14
| | | | | | | | | * Inline some functions * Eliminate some comparisons from the release build This is good for another .3 on gcc. llvm-svn: 15144
* Rename LiveIntervals.(cpp|h) -> LiveIntervalAnalysis.(cpp|h)Chris Lattner2004-07-231-0/+674
llvm-svn: 15135
OpenPOWER on IntegriCloud