diff options
author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2010-10-05 22:19:33 +0000 |
---|---|---|
committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2010-10-05 22:19:33 +0000 |
commit | 57d0f2deb0afefe69770a28937a4363e7b1f9753 (patch) | |
tree | 9dd691b0e7d9524889d981e0db0778189eacf15c /lib/CodeGen/SplitKit.cpp | |
parent | dbc36091ff7be76d22105b67db73e18224bebb2f (diff) |
Update SplitEditor API to reflect the fact that the original live interval is
never kept after splitting.
Keeping the original interval made sense when the split region doesn't modify
the register, and the original is spilled. We can get the same effect by
detecting reloaded values when spilling around copies.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115695 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/SplitKit.cpp')
-rw-r--r-- | lib/CodeGen/SplitKit.cpp | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/lib/CodeGen/SplitKit.cpp b/lib/CodeGen/SplitKit.cpp index bd164a30d9..bb372403a6 100644 --- a/lib/CodeGen/SplitKit.cpp +++ b/lib/CodeGen/SplitKit.cpp @@ -802,7 +802,7 @@ SplitEditor::addTruncSimpleRange(SlotIndex Start, SlotIndex End, VNInfo *VNI) { /// rewrite - after all the new live ranges have been created, rewrite /// instructions using curli to use the new intervals. -bool SplitEditor::rewrite() { +void SplitEditor::rewrite() { assert(!openli_.getLI() && "Previous LI not closed before rewrite"); // First we need to fill in the live ranges in dupli. @@ -897,7 +897,6 @@ bool SplitEditor::rewrite() { DEBUG(dbgs() << " new interval " << mri_.getRegClass(li.reg)->getName() << ":" << li << '\n'); } - return dupli_.getLI(); } @@ -905,7 +904,7 @@ bool SplitEditor::rewrite() { // Loop Splitting //===----------------------------------------------------------------------===// -bool SplitEditor::splitAroundLoop(const MachineLoop *Loop) { +void SplitEditor::splitAroundLoop(const MachineLoop *Loop) { SplitAnalysis::LoopBlocks Blocks; sa_.getLoopBlocks(Loop, Blocks); @@ -938,7 +937,7 @@ bool SplitEditor::splitAroundLoop(const MachineLoop *Loop) { // Done. closeIntv(); - return rewrite(); + rewrite(); } @@ -947,9 +946,8 @@ bool SplitEditor::splitAroundLoop(const MachineLoop *Loop) { //===----------------------------------------------------------------------===// /// splitSingleBlocks - Split curli into a separate live interval inside each -/// basic block in Blocks. Return true if curli has been completely replaced, -/// false if curli is still intact, and needs to be spilled or split further. -bool SplitEditor::splitSingleBlocks(const SplitAnalysis::BlockPtrSet &Blocks) { +/// basic block in Blocks. +void SplitEditor::splitSingleBlocks(const SplitAnalysis::BlockPtrSet &Blocks) { DEBUG(dbgs() << " splitSingleBlocks for " << Blocks.size() << " blocks.\n"); // Determine the first and last instruction using curli in each block. typedef std::pair<SlotIndex,SlotIndex> IndexPair; @@ -983,7 +981,7 @@ bool SplitEditor::splitSingleBlocks(const SplitAnalysis::BlockPtrSet &Blocks) { leaveIntvAfter(IP.second); closeIntv(); } - return rewrite(); + rewrite(); } @@ -1006,10 +1004,8 @@ const MachineBasicBlock *SplitAnalysis::getBlockForInsideSplit() { return usingBlocks_.begin()->first; } -/// splitInsideBlock - Split curli into multiple intervals inside MBB. Return -/// true if curli has been completely replaced, false if curli is still -/// intact, and needs to be spilled or split further. -bool SplitEditor::splitInsideBlock(const MachineBasicBlock *MBB) { +/// splitInsideBlock - Split curli into multiple intervals inside MBB. +void SplitEditor::splitInsideBlock(const MachineBasicBlock *MBB) { SmallVector<SlotIndex, 32> Uses; Uses.reserve(sa_.usingInstrs_.size()); for (SplitAnalysis::InstrPtrSet::const_iterator I = sa_.usingInstrs_.begin(), @@ -1058,5 +1054,5 @@ bool SplitEditor::splitInsideBlock(const MachineBasicBlock *MBB) { closeIntv(); } - return rewrite(); + rewrite(); } |