pre-RA-sched assertion fix. This bug was exposed by r176037.
authorAndrew Trick <atrick@apple.com>
Thu, 7 Mar 2013 19:07:57 +0000 (19:07 +0000)
committerAndrew Trick <atrick@apple.com>
Thu, 7 Mar 2013 19:07:57 +0000 (19:07 +0000)
rdar:13370002 [pre-RA-sched] assertion: released too many times

I tracked this down to an earlier hack that is no longer applicable
and interfered with normal scheduler logic. With the changes in
r176037, it was causing an instruction to be scheduled multiple times.

I have an external test case that I tried hard to reduce and
failed. I can't even reproduce with llc.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@176636 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp

index addfccbd002409fbbd359b98a8528101f6972e2c..f843584a91c5006e4bc74a5a256b71f7b7da6167 100644 (file)
@@ -904,9 +904,6 @@ void ScheduleDAGRRList::BacktrackBottomUp(SUnit *SU, SUnit *BtSU) {
   SUnit *OldSU = Sequence.back();
   while (true) {
     Sequence.pop_back();
-    if (SU->isSucc(OldSU))
-      // Don't try to remove SU from AvailableQueue.
-      SU->isAvailable = false;
     // FIXME: use ready cycle instead of height
     CurCycle = OldSU->getHeight();
     UnscheduleNodeBottomUp(OldSU);