summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Transforms')
-rw-r--r--llvm/lib/Transforms/Scalar/CallSiteSplitting.cpp6
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/Scalar/CallSiteSplitting.cpp b/llvm/lib/Transforms/Scalar/CallSiteSplitting.cpp
index 796177b5f85..2a29c08a655 100644
--- a/llvm/lib/Transforms/Scalar/CallSiteSplitting.cpp
+++ b/llvm/lib/Transforms/Scalar/CallSiteSplitting.cpp
@@ -206,6 +206,12 @@ static bool canSplitCallSite(CallSite CS, TargetTransformInfo &TTI) {
isa<IndirectBrInst>(Preds[1]->getTerminator()))
return false;
+ // Do not split a call-site in an exception handling block. This check
+ // prevents triggering an assertion in SplitEdge used via
+ // DuplicateInstructionsInSplitBetween.
+ if (CallSiteBB->isEHPad())
+ return false;
+
return CallSiteBB->canSplitPredecessors();
}
OpenPOWER on IntegriCloud