diff options
Diffstat (limited to 'llvm/lib/Transforms')
-rw-r--r-- | llvm/lib/Transforms/Scalar/CallSiteSplitting.cpp | 6 |
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(); } |