summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Target/AMDGPU/SILowerControlFlow.cpp
diff options
context:
space:
mode:
authorMatt Arsenault <Matthew.Arsenault@amd.com>2016-07-15 00:58:13 +0000
committerMatt Arsenault <Matthew.Arsenault@amd.com>2016-07-15 00:58:13 +0000
commitfa5a86a40373797c8f10bc2d57e60064b1623db1 (patch)
tree665673ddc76432eb59f6a1c5f84ad5973e0e2c85 /llvm/lib/Target/AMDGPU/SILowerControlFlow.cpp
parent83ab049af2579ca6afc5934923b81c432802910a (diff)
downloadbcm5719-llvm-fa5a86a40373797c8f10bc2d57e60064b1623db1.tar.gz
bcm5719-llvm-fa5a86a40373797c8f10bc2d57e60064b1623db1.zip
AMDGPU: Fix trying to skip from a block with no successors
Found while reducing bug 28550 llvm-svn: 275509
Diffstat (limited to 'llvm/lib/Target/AMDGPU/SILowerControlFlow.cpp')
-rw-r--r--llvm/lib/Target/AMDGPU/SILowerControlFlow.cpp5
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;
}
OpenPOWER on IntegriCloud