misched: fix LiveInterval update for bottom-up scheduling

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@153162 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Andrew Trick 2012-03-21 04:12:16 +00:00
parent aad37f1925
commit f70af52a8f

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);