dupli always has an interval now.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@115708 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Jakob Stoklund Olesen 2010-10-05 23:10:04 +00:00
parent 6dbbff9172
commit d00f7e0c76

View File

@ -798,6 +798,7 @@ SplitEditor::addTruncSimpleRange(SlotIndex Start, SlotIndex End, VNInfo *VNI) {
/// instructions using curli to use the new intervals. /// instructions using curli to use the new intervals.
void SplitEditor::rewrite() { void SplitEditor::rewrite() {
assert(!openli_.getLI() && "Previous LI not closed before rewrite"); assert(!openli_.getLI() && "Previous LI not closed before rewrite");
assert(dupli_.getLI() && "No dupli for rewrite. Noop spilt?");
// First we need to fill in the live ranges in dupli. // First we need to fill in the live ranges in dupli.
// If values were redefined, we need a full recoloring with SSA update. // If values were redefined, we need a full recoloring with SSA update.
@ -863,23 +864,19 @@ void SplitEditor::rewrite() {
break; break;
} }
} }
if (LI) { MO.setReg(LI->reg);
MO.setReg(LI->reg); sa_.removeUse(MI);
sa_.removeUse(MI); DEBUG(dbgs() << " rewrite " << Idx << '\t' << *MI);
DEBUG(dbgs() << " rewrite " << Idx << '\t' << *MI);
}
} }
// dupli_ goes in last, after rewriting. // dupli_ goes in last, after rewriting.
if (dupli_.getLI()) { if (dupli_.getLI()->empty()) {
if (dupli_.getLI()->empty()) { DEBUG(dbgs() << " dupli became empty?\n");
DEBUG(dbgs() << " dupli became empty?\n"); lis_.removeInterval(dupli_.getLI()->reg);
lis_.removeInterval(dupli_.getLI()->reg); dupli_.reset(0);
dupli_.reset(0); } else {
} else { dupli_.getLI()->RenumberValues(lis_);
dupli_.getLI()->RenumberValues(lis_); intervals_.push_back(dupli_.getLI());
intervals_.push_back(dupli_.getLI());
}
} }
// Calculate spill weight and allocation hints for new intervals. // Calculate spill weight and allocation hints for new intervals.