diff options
author | Matt Arsenault <Matthew.Arsenault@amd.com> | 2016-07-19 00:35:22 +0000 |
---|---|---|
committer | Matt Arsenault <Matthew.Arsenault@amd.com> | 2016-07-19 00:35:22 +0000 |
commit | fe358066eaea7db1a25a39b7dcf50cfaa7dd2c6d (patch) | |
tree | 60eadf08bcc745f6ddccfcd8f9cbf587317e6461 /llvm/lib/Target/AMDGPU/SIMachineScheduler.cpp | |
parent | cb540bc03c29ad9e9c1982267135d2cee3033058 (diff) | |
download | bcm5719-llvm-fe358066eaea7db1a25a39b7dcf50cfaa7dd2c6d.tar.gz bcm5719-llvm-fe358066eaea7db1a25a39b7dcf50cfaa7dd2c6d.zip |
AMDGPU/SI: Fix SI scheduler refcount issue
Without this fix, releaseSuccessors when InOrOutBlock is
false could release SUs outside the schedule BasicBlock.
Patch by Axel Davy
llvm-svn: 275935
Diffstat (limited to 'llvm/lib/Target/AMDGPU/SIMachineScheduler.cpp')
-rw-r--r-- | llvm/lib/Target/AMDGPU/SIMachineScheduler.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/llvm/lib/Target/AMDGPU/SIMachineScheduler.cpp b/llvm/lib/Target/AMDGPU/SIMachineScheduler.cpp index 8de1c4a51e2..7125b411c60 100644 --- a/llvm/lib/Target/AMDGPU/SIMachineScheduler.cpp +++ b/llvm/lib/Target/AMDGPU/SIMachineScheduler.cpp @@ -464,6 +464,9 @@ void SIScheduleBlock::releaseSuccessors(SUnit *SU, bool InOrOutBlock) { for (SDep& Succ : SU->Succs) { SUnit *SuccSU = Succ.getSUnit(); + if (SuccSU->NodeNum >= DAG->SUnits.size()) + continue; + if (BC->isSUInBlock(SuccSU, ID) != InOrOutBlock) continue; |