diff options
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/Transforms/Scalar/PlaceSafepoints.cpp | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/llvm/lib/Transforms/Scalar/PlaceSafepoints.cpp b/llvm/lib/Transforms/Scalar/PlaceSafepoints.cpp index 536f2a673bb..ffed810d823 100644 --- a/llvm/lib/Transforms/Scalar/PlaceSafepoints.cpp +++ b/llvm/lib/Transforms/Scalar/PlaceSafepoints.cpp @@ -430,6 +430,13 @@ static Instruction *findLocationForEntrySafepoint(Function &F, if (II->getIntrinsicID() == Intrinsic::assume) { continue; } + // llvm.frameescape() intrinsic is not a real call. The intrinsic can + // exist only in the entry block. + // Inserting a statepoint before llvm.frameescape() may split the + // entry block, and push the intrinsic out of the entry block. + if (II->getIntrinsicID() == Intrinsic::frameescape) { + continue; + } } break; } |