summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/StrongPHIElimination.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* We don't need to insert copies for implicit_def's.Owen Anderson2008-09-261-1/+5
| | | | llvm-svn: 56674
* Fix off-by-one error when updating live intervals.Owen Anderson2008-09-241-1/+1
| | | | llvm-svn: 56567
* Add initial support for inserting last minute copies.Owen Anderson2008-09-231-28/+53
| | | | llvm-svn: 56485
* Significant improvements to the logic for merging live intervals. This code ↵Owen Anderson2008-09-221-15/+53
| | | | | | | | | can't just use LI::MergeValueAsValue, as its behavior in the presence of overlapping ranges isn't what StrongPHIElimination wants. llvm-svn: 56472
* Tidy up several unbeseeming casts from pointer to intptr_t.Dan Gohman2008-09-041-1/+1
| | | | llvm-svn: 55779
* Use empty() instead of begin() == end().Dan Gohman2008-08-141-1/+1
| | | | llvm-svn: 54780
* Get rid of unused variable.Owen Anderson2008-08-131-1/+0
| | | | llvm-svn: 54742
* 1) Merge entire live intervals instead of parts of them.Owen Anderson2008-08-131-62/+36
| | | | | | 2) Conditionalize temporary insertion if we don't need it. llvm-svn: 54741
* Do a dominator walk when scheduling copies, rather than a DFS on the CFG. ↵Owen Anderson2008-08-071-14/+44
| | | | | | | | Also, fix a few problems when creating live intervals for temporaries created by phi elimination. llvm-svn: 54483
* Correct handle cases where two phis are coalesced together, and correct ↵Owen Anderson2008-08-061-6/+39
| | | | | | | | break up the case where two different phis want to coalesce with the same vreg. llvm-svn: 54426
* We don't need to try to coalesce input vregs that are the same as the output ↵Owen Anderson2008-08-061-0/+7
| | | | | | vreg. llvm-svn: 54422
* Only trim a live interval if the register is not used after the PHI node.Owen Anderson2008-08-061-2/+5
| | | | llvm-svn: 54421
* Oops, we were already checking for dead phis. Handle this the proper way, then.Owen Anderson2008-08-051-22/+19
| | | | llvm-svn: 54371
* We don't need to update live intervals for dead PHIs.Owen Anderson2008-08-051-29/+32
| | | | llvm-svn: 54369
* Use existing LiveInterval methods to simplify live interval merging. Thanks ↵Owen Anderson2008-07-301-31/+32
| | | | | | to Evan for pointing these out. llvm-svn: 54225
* When merging live intervals, we also need to merge in any live ranges that ↵Owen Anderson2008-07-301-13/+42
| | | | | | | | are inputs to two-address instructions that themselves define a range we already care about. llvm-svn: 54185
* When merging a PHI operand's live interval into the PHI's live interval, we ↵Owen Anderson2008-07-291-9/+17
| | | | | | | | need to merge over all liveranges in the operand's interval that share the relevant value number, not just the range that immediately precedes the PHI. llvm-svn: 54174
* Fix the issues originally addressed in r54070. After thinking about it some ↵Owen Anderson2008-07-251-2/+19
| | | | | | | | | | more, I realized that the right thing to do is to have StrongPHIElimination use its knowledge of the PHIs before they're erased to update the intervals appropriate. This is both simpler and more accurate than the alternative, which was having LIA figure it out when it renumbered things, plus it's just the right thing to do! llvm-svn: 54077
* In order to avoid reprocessing a register more than once, we need to add itOwen Anderson2008-07-251-1/+1
| | | | | | to the handled set so it will get filtered out in future iterations. llvm-svn: 54065
* Remove live interval entries for an interval if we're eliminating its only VN.Owen Anderson2008-07-251-1/+6
| | | | llvm-svn: 54062
* Store the predecessor MBB in the PHIUnion, rather than an index, since the ↵Owen Anderson2008-07-241-26/+28
| | | | | | indices will change after renumbering. llvm-svn: 53985
* Remove debugging code.Owen Anderson2008-06-051-4/+0
| | | | llvm-svn: 52016
* Use the newly created helper on LiveIntervals.Owen Anderson2008-06-051-116/+21
| | | | llvm-svn: 52013
* Correctly construct live intervals for the copies we inserted into the ↵Owen Anderson2008-06-041-1/+38
| | | | | | predecessors of a block containing a PHI. llvm-svn: 51950
* We need to subtract one from this index because live ranges are open at the end.Owen Anderson2008-06-041-1/+1
| | | | llvm-svn: 51922
* Preserve the register coallescer, and update live intervals more correctly ↵Owen Anderson2008-05-301-1/+4
| | | | | | by triggering a renumbering after phi elimination. llvm-svn: 51780
* Change class' public PassInfo variables to by initialized with theDan Gohman2008-05-131-1/+1
| | | | | | | | | | | address of the PassInfo directly instead of calling getPassInfo. This eliminates a bunch of dynamic initializations of static data. Also, fold RegisterPassBase into PassInfo, make a bunch of its data members const, and rearrange some code to initialize data members in constructors instead of using setter member functions. llvm-svn: 51022
* Clean up the use of static and anonymous namespaces. This turned upDan Gohman2008-05-131-4/+9
| | | | | | | several things that were neither in an anonymous namespace nor static but not intended to be global. llvm-svn: 51017
* In some situations, we need to check for local interferences between the PHIOwen Anderson2008-04-021-2/+11
| | | | | | node and its inputs. llvm-svn: 49070
* Correctly mark a valno that was previous defined by a PHI node as having anOwen Anderson2008-04-021-4/+7
| | | | | | unknown defining inst after PHI elimination. llvm-svn: 49069
* Don't dereference MBB->end().Owen Anderson2008-04-011-1/+1
| | | | llvm-svn: 49043
* Fix a major bug in the DFS calculation. Thanks for Christopher Lamb for ↵Owen Anderson2008-03-311-1/+1
| | | | | | pointing this out. llvm-svn: 48973
* Remove some unneeded code for LiveInterval joining, and fix a bug in the Phi ↵Owen Anderson2008-03-291-58/+25
| | | | | | | | elimination algorithm where we were accidentally reasoning about the source rather than the destination. llvm-svn: 48936
* Dead PHI instructions need to be handled specially.Owen Anderson2008-03-261-0/+22
| | | | llvm-svn: 48811
* Remove some debugging code.Owen Anderson2008-03-251-3/+0
| | | | llvm-svn: 48803
* StrongPHIElimination doesn't support swapping live intervals like the ↵Owen Anderson2008-03-251-9/+6
| | | | | | coalescer does. llvm-svn: 48802
* Remove #include<iostream>, which I was using for debugging.Owen Anderson2008-03-241-2/+0
| | | | llvm-svn: 48739
* Be sure to remove intervals after we've joined them. Also, remove some ↵Owen Anderson2008-03-241-46/+18
| | | | | | | | | duplicated code. With this pass, StrongPHIElim can compile very simple testcases correctly. There's still a ways to go before it's ready for prime time, though. llvm-svn: 48719
* A first attempt at updating live intervals, with code lifted fromOwen Anderson2008-03-171-4/+176
| | | | | | | the coalescer. This doesn't really work, but gets us farther than before. llvm-svn: 48446
* We also need to collect the VN IDs for the PHI instructions for later updating.Owen Anderson2008-03-121-1/+10
| | | | llvm-svn: 48278
* When we're determining what registers to coallesce, track the VNInfo IDs for ↵Owen Anderson2008-03-121-16/+32
| | | | | | | | the definitions that feed the PHI instructions. We'll need these IDs in order to update LiveIntervals properly. llvm-svn: 48277
* Move StrongPHIElimination after live interval analysis. This will make ↵Owen Anderson2008-03-101-36/+27
| | | | | | things happier down the road. llvm-svn: 48138
* some more spelling changesGabor Greif2008-03-061-1/+1
| | | | llvm-svn: 47996
* Refactor code. Remove duplicated functions that basically do the same thing asEvan Cheng2008-03-051-4/+4
| | | | | | findRegisterUseOperandIdx, findRegisterDefOperandIndx. Fix some naming inconsistencies. llvm-svn: 47927
* Fix an iterator invalidation issue.Owen Anderson2008-01-221-2/+8
| | | | llvm-svn: 46263
* Clarify a deviation from the original algorithm.Owen Anderson2008-01-211-1/+4
| | | | llvm-svn: 46218
* Improve a few comments.Owen Anderson2008-01-211-1/+6
| | | | llvm-svn: 46217
* Get rid of all uses of LiveVariables::VarInfo::DefInst in favor of the ↵Owen Anderson2008-01-101-58/+66
| | | | | | | | equivalent API from MachineRegisterInfo. Once all clients are switched over, the former will be going away. llvm-svn: 45805
* Add more comments explaining the basics of how the decision of when to ↵Owen Anderson2008-01-101-7/+37
| | | | | | | | rename and when to insert copies is made. llvm-svn: 45799
* Get rid of the isKillInst predicate. LiveVariables already provides this ↵Owen Anderson2008-01-101-14/+10
| | | | | | information. llvm-svn: 45797
OpenPOWER on IntegriCloud