Use LLVMSetTailCallKind
This commit is contained in:
parent
3507a749b3
commit
c64c6d85e1
3 changed files with 3 additions and 28 deletions
|
|
@ -1453,7 +1453,7 @@ impl<'a, 'll, 'tcx> BuilderMethods<'a, 'tcx> for Builder<'a, 'll, 'tcx> {
|
|||
instance: Option<Instance<'tcx>>,
|
||||
) {
|
||||
let call = self.call(llty, fn_attrs, Some(fn_abi), llfn, args, funclet, instance);
|
||||
llvm::LLVMRustSetTailCallKind(call, llvm::TailCallKind::MustTail);
|
||||
llvm::LLVMSetTailCallKind(call, llvm::TailCallKind::MustTail);
|
||||
|
||||
match &fn_abi.ret.mode {
|
||||
PassMode::Ignore | PassMode::Indirect { .. } => self.ret_void(),
|
||||
|
|
|
|||
|
|
@ -97,6 +97,7 @@ pub(crate) enum ModuleFlagMergeBehavior {
|
|||
|
||||
// Consts for the LLVM CallConv type, pre-cast to usize.
|
||||
|
||||
/// Must match the layout of `LLVMTailCallKind`.
|
||||
#[derive(Copy, Clone, PartialEq, Debug)]
|
||||
#[repr(C)]
|
||||
#[allow(dead_code)]
|
||||
|
|
@ -1197,7 +1198,7 @@ unsafe extern "C" {
|
|||
pub(crate) safe fn LLVMIsGlobalConstant(GlobalVar: &Value) -> Bool;
|
||||
pub(crate) safe fn LLVMSetGlobalConstant(GlobalVar: &Value, IsConstant: Bool);
|
||||
pub(crate) safe fn LLVMSetTailCall(CallInst: &Value, IsTailCall: Bool);
|
||||
pub(crate) safe fn LLVMRustSetTailCallKind(CallInst: &Value, Kind: TailCallKind);
|
||||
pub(crate) safe fn LLVMSetTailCallKind(CallInst: &Value, kind: TailCallKind);
|
||||
|
||||
// Operations on attributes
|
||||
pub(crate) fn LLVMCreateStringAttribute(
|
||||
|
|
|
|||
|
|
@ -1993,29 +1993,3 @@ extern "C" void LLVMRustSetNoSanitizeHWAddress(LLVMValueRef Global) {
|
|||
MD.NoHWAddress = true;
|
||||
GV.setSanitizerMetadata(MD);
|
||||
}
|
||||
|
||||
enum class LLVMRustTailCallKind {
|
||||
None = 0,
|
||||
Tail = 1,
|
||||
MustTail = 2,
|
||||
NoTail = 3
|
||||
};
|
||||
|
||||
extern "C" void LLVMRustSetTailCallKind(LLVMValueRef Call,
|
||||
LLVMRustTailCallKind Kind) {
|
||||
CallInst *CI = unwrap<CallInst>(Call);
|
||||
switch (Kind) {
|
||||
case LLVMRustTailCallKind::None:
|
||||
CI->setTailCallKind(CallInst::TCK_None);
|
||||
break;
|
||||
case LLVMRustTailCallKind::Tail:
|
||||
CI->setTailCallKind(CallInst::TCK_Tail);
|
||||
break;
|
||||
case LLVMRustTailCallKind::MustTail:
|
||||
CI->setTailCallKind(CallInst::TCK_MustTail);
|
||||
break;
|
||||
case LLVMRustTailCallKind::NoTail:
|
||||
CI->setTailCallKind(CallInst::TCK_NoTail);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue