summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2016-10-07 01:38:35 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2016-10-07 01:38:35 +0000
commit8c03c1bade5b7fcfb3724dc65771ef9dcf8f8072 (patch)
tree845e5ce8b9ff3b89d9fa68af6f298c7825142b61 /llvm/lib/Transforms/Utils/SimplifyCFG.cpp
parent16d29e31113b5fd593c66716d81d2da729a8cfec (diff)
downloadbcm5719-llvm-8c03c1bade5b7fcfb3724dc65771ef9dcf8f8072.tar.gz
bcm5719-llvm-8c03c1bade5b7fcfb3724dc65771ef9dcf8f8072.zip
[SimplifyCFG] Correctly test for unconditional branches in GetCaseResults
GetCaseResults assumed that a terminator with one successor was an unconditional branch. This is not necessarily the case, it could be a cleanupret. Strengthen the check by querying whether or not the terminator is exceptional. llvm-svn: 283517
Diffstat (limited to 'llvm/lib/Transforms/Utils/SimplifyCFG.cpp')
-rw-r--r--llvm/lib/Transforms/Utils/SimplifyCFG.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
index 90ce6720182..1546a60c337 100644
--- a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
+++ b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
@@ -4503,7 +4503,7 @@ GetCaseResults(SwitchInst *SI, ConstantInt *CaseVal, BasicBlock *CaseDest,
++I) {
if (TerminatorInst *T = dyn_cast<TerminatorInst>(I)) {
// If the terminator is a simple branch, continue to the next block.
- if (T->getNumSuccessors() != 1)
+ if (T->getNumSuccessors() != 1 || T->isExceptional())
return false;
Pred = CaseDest;
CaseDest = T->getSuccessor(0);
OpenPOWER on IntegriCloud