Commit message (Collapse) | Author | Age | Files | Lines | ||
---|---|---|---|---|---|---|
... | ||||||
* | We don't need to insert copies for implicit_def's. | Owen Anderson | 2008-09-26 | 1 | -1/+5 | |
| | | | | llvm-svn: 56674 | |||||
* | Fix off-by-one error when updating live intervals. | Owen Anderson | 2008-09-24 | 1 | -1/+1 | |
| | | | | llvm-svn: 56567 | |||||
* | Add initial support for inserting last minute copies. | Owen Anderson | 2008-09-23 | 1 | -28/+53 | |
| | | | | llvm-svn: 56485 | |||||
* | Significant improvements to the logic for merging live intervals. This code ↵ | Owen Anderson | 2008-09-22 | 1 | -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 Gohman | 2008-09-04 | 1 | -1/+1 | |
| | | | | llvm-svn: 55779 | |||||
* | Use empty() instead of begin() == end(). | Dan Gohman | 2008-08-14 | 1 | -1/+1 | |
| | | | | llvm-svn: 54780 | |||||
* | Get rid of unused variable. | Owen Anderson | 2008-08-13 | 1 | -1/+0 | |
| | | | | llvm-svn: 54742 | |||||
* | 1) Merge entire live intervals instead of parts of them. | Owen Anderson | 2008-08-13 | 1 | -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 Anderson | 2008-08-07 | 1 | -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 Anderson | 2008-08-06 | 1 | -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 Anderson | 2008-08-06 | 1 | -0/+7 | |
| | | | | | | vreg. llvm-svn: 54422 | |||||
* | Only trim a live interval if the register is not used after the PHI node. | Owen Anderson | 2008-08-06 | 1 | -2/+5 | |
| | | | | llvm-svn: 54421 | |||||
* | Oops, we were already checking for dead phis. Handle this the proper way, then. | Owen Anderson | 2008-08-05 | 1 | -22/+19 | |
| | | | | llvm-svn: 54371 | |||||
* | We don't need to update live intervals for dead PHIs. | Owen Anderson | 2008-08-05 | 1 | -29/+32 | |
| | | | | llvm-svn: 54369 | |||||
* | Use existing LiveInterval methods to simplify live interval merging. Thanks ↵ | Owen Anderson | 2008-07-30 | 1 | -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 Anderson | 2008-07-30 | 1 | -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 Anderson | 2008-07-29 | 1 | -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 Anderson | 2008-07-25 | 1 | -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 it | Owen Anderson | 2008-07-25 | 1 | -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 Anderson | 2008-07-25 | 1 | -1/+6 | |
| | | | | llvm-svn: 54062 | |||||
* | Store the predecessor MBB in the PHIUnion, rather than an index, since the ↵ | Owen Anderson | 2008-07-24 | 1 | -26/+28 | |
| | | | | | | indices will change after renumbering. llvm-svn: 53985 | |||||
* | Remove debugging code. | Owen Anderson | 2008-06-05 | 1 | -4/+0 | |
| | | | | llvm-svn: 52016 | |||||
* | Use the newly created helper on LiveIntervals. | Owen Anderson | 2008-06-05 | 1 | -116/+21 | |
| | | | | llvm-svn: 52013 | |||||
* | Correctly construct live intervals for the copies we inserted into the ↵ | Owen Anderson | 2008-06-04 | 1 | -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 Anderson | 2008-06-04 | 1 | -1/+1 | |
| | | | | llvm-svn: 51922 | |||||
* | Preserve the register coallescer, and update live intervals more correctly ↵ | Owen Anderson | 2008-05-30 | 1 | -1/+4 | |
| | | | | | | by triggering a renumbering after phi elimination. llvm-svn: 51780 | |||||
* | Change class' public PassInfo variables to by initialized with the | Dan Gohman | 2008-05-13 | 1 | -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 up | Dan Gohman | 2008-05-13 | 1 | -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 PHI | Owen Anderson | 2008-04-02 | 1 | -2/+11 | |
| | | | | | | node and its inputs. llvm-svn: 49070 | |||||
* | Correctly mark a valno that was previous defined by a PHI node as having an | Owen Anderson | 2008-04-02 | 1 | -4/+7 | |
| | | | | | | unknown defining inst after PHI elimination. llvm-svn: 49069 | |||||
* | Don't dereference MBB->end(). | Owen Anderson | 2008-04-01 | 1 | -1/+1 | |
| | | | | llvm-svn: 49043 | |||||
* | Fix a major bug in the DFS calculation. Thanks for Christopher Lamb for ↵ | Owen Anderson | 2008-03-31 | 1 | -1/+1 | |
| | | | | | | pointing this out. llvm-svn: 48973 | |||||
* | Remove some unneeded code for LiveInterval joining, and fix a bug in the Phi ↵ | Owen Anderson | 2008-03-29 | 1 | -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 Anderson | 2008-03-26 | 1 | -0/+22 | |
| | | | | llvm-svn: 48811 | |||||
* | Remove some debugging code. | Owen Anderson | 2008-03-25 | 1 | -3/+0 | |
| | | | | llvm-svn: 48803 | |||||
* | StrongPHIElimination doesn't support swapping live intervals like the ↵ | Owen Anderson | 2008-03-25 | 1 | -9/+6 | |
| | | | | | | coalescer does. llvm-svn: 48802 | |||||
* | Remove #include<iostream>, which I was using for debugging. | Owen Anderson | 2008-03-24 | 1 | -2/+0 | |
| | | | | llvm-svn: 48739 | |||||
* | Be sure to remove intervals after we've joined them. Also, remove some ↵ | Owen Anderson | 2008-03-24 | 1 | -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 from | Owen Anderson | 2008-03-17 | 1 | -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 Anderson | 2008-03-12 | 1 | -1/+10 | |
| | | | | llvm-svn: 48278 | |||||
* | When we're determining what registers to coallesce, track the VNInfo IDs for ↵ | Owen Anderson | 2008-03-12 | 1 | -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 Anderson | 2008-03-10 | 1 | -36/+27 | |
| | | | | | | things happier down the road. llvm-svn: 48138 | |||||
* | some more spelling changes | Gabor Greif | 2008-03-06 | 1 | -1/+1 | |
| | | | | llvm-svn: 47996 | |||||
* | Refactor code. Remove duplicated functions that basically do the same thing as | Evan Cheng | 2008-03-05 | 1 | -4/+4 | |
| | | | | | | findRegisterUseOperandIdx, findRegisterDefOperandIndx. Fix some naming inconsistencies. llvm-svn: 47927 | |||||
* | Fix an iterator invalidation issue. | Owen Anderson | 2008-01-22 | 1 | -2/+8 | |
| | | | | llvm-svn: 46263 | |||||
* | Clarify a deviation from the original algorithm. | Owen Anderson | 2008-01-21 | 1 | -1/+4 | |
| | | | | llvm-svn: 46218 | |||||
* | Improve a few comments. | Owen Anderson | 2008-01-21 | 1 | -1/+6 | |
| | | | | llvm-svn: 46217 | |||||
* | Get rid of all uses of LiveVariables::VarInfo::DefInst in favor of the ↵ | Owen Anderson | 2008-01-10 | 1 | -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 Anderson | 2008-01-10 | 1 | -7/+37 | |
| | | | | | | | | rename and when to insert copies is made. llvm-svn: 45799 | |||||
* | Get rid of the isKillInst predicate. LiveVariables already provides this ↵ | Owen Anderson | 2008-01-10 | 1 | -14/+10 | |
| | | | | | | information. llvm-svn: 45797 |