summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/LiveIntervalAnalysis.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Ugh. Copy coalescer does not update register numbers.Evan Cheng2007-04-021-2/+15
| | | | llvm-svn: 35600
* Bug fix for PR1279. When isDead is propagate by copy coalescing, we keep lengthEvan Cheng2007-03-301-5/+10
| | | | | | | | of dead def live interval at 1 to avoid multiple def's targeting the same register. The previous patch missed a case where the source operand is live-in. In that case, remove the whole interval. llvm-svn: 35512
* Move rematerialization out of beta.Evan Cheng2007-03-281-7/+1
| | | | llvm-svn: 35419
* Fix for PR1279. Dead def has a live interval of length 1. Copy coalescing shouldEvan Cheng2007-03-281-3/+5
| | | | | | not violate that. llvm-svn: 35396
* Fix for PR1266. Don't mark a two address operand IsKill.Evan Cheng2007-03-261-3/+3
| | | | llvm-svn: 35365
* Fix for PR1257. Bug in live range shortening as a result of copy coalescingEvan Cheng2007-03-221-11/+9
| | | | | | where the destination is dead. llvm-svn: 35252
* First cut trivial re-materialization support.Evan Cheng2007-03-201-5/+26
| | | | llvm-svn: 35208
* Remove -reduce-joining-phys-regs options. Make it on by default.Evan Cheng2007-03-191-3/+1
| | | | llvm-svn: 35165
* Minor bug fix.Evan Cheng2007-03-191-1/+1
| | | | llvm-svn: 35153
* - Merge UsedBlocks info after two virtual registers are coalesced.Evan Cheng2007-03-181-23/+30
| | | | | | - Use distance to closest use to determine whether to abort coalescing. llvm-svn: 35141
* Joining a live interval of a physical register with a virtual one can turn outEvan Cheng2007-03-171-0/+54
| | | | | | | | | | | | to be really bad. Once they are joined they are not broken apart. Also, physical intervals cannot be spilled! Added a heuristic as a workaround for this. Be careful coalescing with a physical register if the virtual register uses are "far". Check if there are uses in the same loop as the source (copy instruction). Check if it is in the loop preheader, etc. llvm-svn: 35134
* Debugging output stuff.Evan Cheng2007-03-151-4/+4
| | | | llvm-svn: 35117
* Watch out for cases like this:Evan Cheng2007-03-031-4/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | entry (0x8b056f0, LLVM BB @0x8b01b30, ID#0): Live Ins: %r0 %r1 %r2 %r3 %reg1032 = tMOVrr %r3<kill> %reg1033 = tMOVri8 1 %reg1034 = tMOVri8 0 tCMPi8 %reg1029<kill>, 0 tBcc mbb<entry,0x8b06a10>, 0 Successors according to CFG: 0x8b06980 0x8b06a10 entry (0x8b06980, LLVM BB @0x8b01b30, ID#12): Predecessors according to CFG: 0x8b056f0 %reg1036 = tMOVrr %reg1034<kill> Successors according to CFG: 0x8b06a10 entry (0x8b06a10, LLVM BB @0x8b01b30, ID#13): Predecessors according to CFG: 0x8b056f0 0x8b06980 %reg1024<dead> = tMOVrr %reg1030<kill> ... reg1030 and r1 have already been joined. When reg1024 and reg1030 are joined, r1 live range from function entry to the tMOVrr instruction are dead. Eliminate r1 from the livein set of the entry BB, not the BB where the copy is. llvm-svn: 34866
* Dead live-in detection bug.Evan Cheng2007-03-021-2/+2
| | | | llvm-svn: 34843
* Oops.Evan Cheng2007-03-011-1/+0
| | | | llvm-svn: 34768
* Track all joined registers and eliminate unneeded kills after all joining ↵Evan Cheng2007-03-011-22/+42
| | | | | | are done. llvm-svn: 34767
* Joining an interval with a dead copy instruction. Shorten the live range to ↵Evan Cheng2007-02-261-20/+46
| | | | | | the last use. llvm-svn: 34645
* Fix a couple of bugs related IsDead back propagation during coalescing.Evan Cheng2007-02-251-5/+10
| | | | llvm-svn: 34595
* If the liveinterval of the source instruction has been extended, remove the ↵Evan Cheng2007-02-251-0/+6
| | | | | | IsKill marker. llvm-svn: 34594
* Handle cases when joining live intervals of two virtual registers.Evan Cheng2007-02-231-7/+17
| | | | llvm-svn: 34534
* Remove unnecessary isKill properties if a live range has been lengthened due ↵Evan Cheng2007-02-221-1/+24
| | | | | | to coalescing. llvm-svn: 34503
* Allow for live in registers for eh landing pads.Jim Laskey2007-02-211-5/+6
| | | | llvm-svn: 34475
* Out of bound reference.Evan Cheng2007-02-211-2/+2
| | | | llvm-svn: 34461
* Re-apply my liveintervalanalysis changes. Now with PR1207 fixes.Evan Cheng2007-02-191-54/+135
| | | | llvm-svn: 34428
* For PR1207:Reid Spencer2007-02-191-134/+54
| | | | | | | Revert patches that caused the problem. Evan, please investigate and reapply when you've discovered the problem. llvm-svn: 34399
* - Changes how function livein's are handled, they now have a start index of 0.Evan Cheng2007-02-171-54/+134
| | | | | | | | - When coalescing a copy MI, if its destination is "dead", propagate the property to the source MI's destination if there are no intervening uses. - Detect dead function live-in's and remove them. llvm-svn: 34383
* Use BitVector instead of vector<bool> which can be extremely slow.Evan Cheng2007-02-151-1/+1
| | | | llvm-svn: 34302
* Allow any MachineBasicBlock (not just the entry block) to have live-in physicalEvan Cheng2007-02-131-39/+33
| | | | | | | registers. Make sure liveinterval analysis is correctly creating live ranges for them. llvm-svn: 34217
* Eliminate static ctors from StatisticsChris Lattner2006-12-191-15/+6
| | | | llvm-svn: 32698
* Changed llvm_ostream et all to OStream. llvm_cerr, llvm_cout, llvm_null, areBill Wendling2006-12-071-2/+2
| | | | | | now cerr, cout, and NullStream resp. llvm-svn: 32298
* MI keeps a ptr of TargetInstrDescriptor, use it.Evan Cheng2006-12-071-1/+2
| | | | llvm-svn: 32296
* Detemplatize the Statistic class. The only type it is instantiated withChris Lattner2006-12-061-5/+5
| | | | | | is 'unsigned'. llvm-svn: 32279
* Unbreak VC++ build.Jeff Cohen2006-12-021-0/+1
| | | | llvm-svn: 32113
* Match TargetInstrInfo changes.Evan Cheng2006-12-011-2/+1
| | | | llvm-svn: 32098
* Converted to using llvm streams instead of <iostream>sBill Wendling2006-11-291-68/+68
| | | | llvm-svn: 31992
* Don't recompute getNumOperands for each iteration.Bill Wendling2006-11-161-1/+1
| | | | llvm-svn: 31783
* Added a new method "CreateNewLiveInterval" which, given a list ofBill Wendling2006-11-161-0/+49
| | | | | | | LiveRanges, creates a new LiveInterval from them. The LiveRanges should have existed already in another LiveInterval, but removed. llvm-svn: 31780
* A register def can be partially dead when the whole register has use(s) but ↵Evan Cheng2006-11-151-1/+8
| | | | | | a subreg does not. llvm-svn: 31760
* 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
OpenPOWER on IntegriCloud