diff options
author | Eli Friedman <eli.friedman@gmail.com> | 2011-12-07 22:06:02 +0000 |
---|---|---|
committer | Eli Friedman <eli.friedman@gmail.com> | 2011-12-07 22:06:02 +0000 |
commit | 0bdc083e213d7addc715f4d93bfbcd3d2a55cb1f (patch) | |
tree | eb01f1a7ce5c8c61dcadb7e2c5682bef9c3c98d9 | |
parent | 9458f82df748a3b79ef8cf3beb5f1c499959f9c6 (diff) | |
download | bcm5719-llvm-0bdc083e213d7addc715f4d93bfbcd3d2a55cb1f.tar.gz bcm5719-llvm-0bdc083e213d7addc715f4d93bfbcd3d2a55cb1f.zip |
Fix an assertion in the scheduler. PR11386. No testcase included because it's rather delicate.
llvm-svn: 146083
-rw-r--r-- | llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp | 5 |
1 files changed, 2 insertions, 3 deletions
diff --git a/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp b/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp index c2d3dd3d60c..98931289ce2 100644 --- a/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp +++ b/llvm/lib/CodeGen/SelectionDAG/ScheduleDAGRRList.cpp @@ -811,12 +811,11 @@ void ScheduleDAGRRList::UnscheduleNodeBottomUp(SUnit *SU) { for (SUnit::succ_iterator I = SU->Succs.begin(), E = SU->Succs.end(); I != E; ++I) { if (I->isAssignedRegDep()) { + if (!LiveRegDefs[I->getReg()]) + ++NumLiveRegs; // This becomes the nearest def. Note that an earlier def may still be // pending if this is a two-address node. LiveRegDefs[I->getReg()] = SU; - if (!LiveRegDefs[I->getReg()]) { - ++NumLiveRegs; - } if (LiveRegGens[I->getReg()] == NULL || I->getSUnit()->getHeight() < LiveRegGens[I->getReg()]->getHeight()) LiveRegGens[I->getReg()] = I->getSUnit(); |