Maintain calling convention when inling calls to llvm.deoptimize
The behavior here was buggy -- we'd forget the calling convention after
inlining a callsite calling llvm.deoptimize.
llvm-svn: 265867
diff --git a/llvm/lib/Transforms/Utils/InlineFunction.cpp b/llvm/lib/Transforms/Utils/InlineFunction.cpp
index 646afd8..0c4ffd9 100644
--- a/llvm/lib/Transforms/Utils/InlineFunction.cpp
+++ b/llvm/lib/Transforms/Utils/InlineFunction.cpp
@@ -1843,6 +1843,7 @@
continue;
}
+ auto CallingConv = DeoptCall->getCallingConv();
auto *CurBB = RI->getParent();
RI->eraseFromParent();
@@ -1856,8 +1857,9 @@
"Expected at least the deopt operand bundle");
IRBuilder<> Builder(CurBB);
- Value *NewDeoptCall =
+ CallInst *NewDeoptCall =
Builder.CreateCall(NewDeoptIntrinsic, CallArgs, OpBundles);
+ NewDeoptCall->setCallingConv(CallingConv);
if (NewDeoptCall->getType()->isVoidTy())
Builder.CreateRetVoid();
else