misched: fix LiveInterval update for bottom-up scheduling

llvm-svn: 153162
This commit is contained in:
Andrew Trick 2012-03-21 04:12:16 +00:00
parent c97a63d77d
commit 6663a6f2ef

View File

@ -1049,9 +1049,19 @@ public:
bool hasRegMaskOp = false;
collectRanges(MI, Entering, Internal, Exiting, hasRegMaskOp, OldIdx);
moveAllEnteringFrom(OldIdx, Entering);
moveAllInternalFrom(OldIdx, Internal);
moveAllExitingFrom(OldIdx, Exiting);
// To keep the LiveRanges valid within an interval, move the ranges closest
// to the destination first. This prevents ranges from overlapping, to that
// APIs like removeRange still work.
if (NewIdx < OldIdx) {
moveAllEnteringFrom(OldIdx, Entering);
moveAllInternalFrom(OldIdx, Internal);
moveAllExitingFrom(OldIdx, Exiting);
}
else {
moveAllExitingFrom(OldIdx, Exiting);
moveAllInternalFrom(OldIdx, Internal);
moveAllEnteringFrom(OldIdx, Entering);
}
if (hasRegMaskOp)
updateRegMaskSlots(OldIdx);