summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/StrongPHIElimination.cpp
Commit message (Collapse)AuthorAgeFilesLines
...
* Remove includes of Support/Compiler.h that are no longer needed after theNick Lewycky2009-10-251-1/+0
| | | | | | VISIBILITY_HIDDEN removal. llvm-svn: 85043
* Remove VISIBILITY_HIDDEN from class/struct found inside anonymous namespaces.Nick Lewycky2009-10-251-1/+1
| | | | | | | Chris claims we should never have visibility_hidden inside any .cpp file but that's still not true even after this commit. llvm-svn: 85042
* Oops. Renamed remaining MachineInstrIndex references.Lang Hames2009-10-031-1/+1
| | | | llvm-svn: 83255
* Renamed MachineInstrIndex to LiveIndex.Lang Hames2009-10-031-9/+9
| | | | llvm-svn: 83254
* Removed static qualifier from a few index related methods. These methods may ↵Lang Hames2009-09-091-9/+8
| | | | | | require a LiveIntervals instance in future. llvm-svn: 81374
* Replaces uses of unsigned for indexes in LiveInterval and VNInfo withLang Hames2009-09-041-16/+15
| | | | | | | | a new class, MachineInstrIndex, which hides arithmetic details from most clients. This is a step towards allowing the register allocator to update/insert code during allocation. llvm-svn: 81040
* remove a few DOUTs here and there.Chris Lattner2009-08-231-9/+11
| | | | llvm-svn: 79832
* Modified VNInfo. The "copy" member is now a union which holds the copy for a ↵Lang Hames2009-08-101-2/+2
| | | | | | register interval, or the defining register for a stack interval. Access is via getCopy/setCopy and getReg/setReg. llvm-svn: 78620
* Use setPreservesAll and setPreservesCFG in CodeGen passes.Dan Gohman2009-07-311-0/+1
| | | | llvm-svn: 77754
* Improved tracking of value number kills. VN kills are now representedLang Hames2009-07-091-2/+2
| | | | | | | | | | | | as an (index,bool) pair. The bool flag records whether the kill is a PHI kill or not. This code will be used to enable splitting of live intervals containing PHI-kills. A slight change to live interval weights introduced an extra spill into lsr-code-insertion (outside the critical sections). The test condition has been updated to reflect this. llvm-svn: 75097
* VNInfo cleanup.Lang Hames2009-06-171-7/+4
| | | | llvm-svn: 73634
* Update to in-place spilling framework. Includes live interval scaling and ↵Lang Hames2009-06-021-1/+1
| | | | | | trivial rewriter. llvm-svn: 72729
* Fix a bug in live-in detection that caused lost-copy problems to show up.Owen Anderson2008-10-121-1/+1
| | | | llvm-svn: 57424
* Fix compilation error on MSVC.Argyrios Kyrtzidis2008-10-041-1/+1
| | | | llvm-svn: 57046
* Switch the MachineOperand accessors back to the short names likeDan Gohman2008-10-031-1/+1
| | | | | | isReg, etc., from isRegister, etc. llvm-svn: 57006
* Use a multimap rather than a map for holding the list of copies to insert, ↵Owen Anderson2008-10-021-12/+19
| | | | | | | | | | so we don't lose copies when two of them have the same source. I don't know what I was thinking when I wrote this originally. Note: There's probably a more efficient way to do this, but I need to think about it some more, and about what determinism guarantees need to be present. llvm-svn: 56964
* Mark merged-in VNInfo's as being PHIKilled.Owen Anderson2008-09-301-0/+5
| | | | llvm-svn: 56893
* 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
OpenPOWER on IntegriCloud