summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2016-03-19 04:39:52 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2016-03-19 04:39:52 +0000
commitcdf2873e36d0ec51fa02e1713aa34fb6762475c0 (patch)
treef95512464bb64ab03236cb3a0789b12926606c88 /llvm/lib
parent50988fba649e75286a78dad8547718d619dce8a7 (diff)
downloadbcm5719-llvm-cdf2873e36d0ec51fa02e1713aa34fb6762475c0.tar.gz
bcm5719-llvm-cdf2873e36d0ec51fa02e1713aa34fb6762475c0.zip
[InstCombine] Don't insert instructions before a catch switch
CatchSwitches are not splittable, we cannot insert casts, etc. before them. This fixes PR26992. llvm-svn: 263874
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp3
1 files changed, 3 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp b/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp
index 7401cb6034a..bbd118c67b8 100644
--- a/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp
+++ b/llvm/lib/Transforms/InstCombine/InstCombineCompares.cpp
@@ -661,6 +661,9 @@ static bool canRewriteGEPAsOffset(Value *Start, Value *Base,
}
if (auto *PN = dyn_cast<PHINode>(V)) {
+ // We cannot transform PHIs on unsplittable basic blocks.
+ if (isa<CatchSwitchInst>(PN->getParent()->getTerminator()))
+ return false;
Explored.insert(PN);
PHIs.insert(PN);
}
OpenPOWER on IntegriCloud