diff options
Diffstat (limited to 'llvm/lib/Target/AMDGPU/SILowerControlFlow.cpp')
-rw-r--r-- | llvm/lib/Target/AMDGPU/SILowerControlFlow.cpp | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/llvm/lib/Target/AMDGPU/SILowerControlFlow.cpp b/llvm/lib/Target/AMDGPU/SILowerControlFlow.cpp index adb0919231c..d82f26ac33a 100644 --- a/llvm/lib/Target/AMDGPU/SILowerControlFlow.cpp +++ b/llvm/lib/Target/AMDGPU/SILowerControlFlow.cpp @@ -158,6 +158,8 @@ static bool opcodeEmitsNoInsts(unsigned Opc) { bool SILowerControlFlow::shouldSkip(MachineBasicBlock *From, MachineBasicBlock *To) { + if (From->succ_empty()) + return false; unsigned NumInstr = 0; MachineFunction *MF = From->getParent(); @@ -217,7 +219,7 @@ bool SILowerControlFlow::skipIfDead(MachineInstr &MI, MachineBasicBlock &NextBB) return false; MachineBasicBlock *SkipBB = insertSkipBlock(MBB, MI.getIterator()); - SkipBB->addSuccessor(&NextBB); + MBB.addSuccessor(SkipBB); const DebugLoc &DL = MI.getDebugLoc(); @@ -493,7 +495,6 @@ MachineBasicBlock *SILowerControlFlow::insertSkipBlock( ++MBBI; MF->insert(MBBI, SkipBB); - MBB.addSuccessor(SkipBB); return SkipBB; } |