diff options
| author | bors <bors@rust-lang.org> | 2025-07-31 05:43:55 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2025-07-31 05:43:55 +0000 |
| commit | cc0a5b73053c62a3df5f84b3ee85079c9b65fa87 (patch) | |
| tree | fff3600fcabfaa5b18abf03493ccab74d9f5c1fc /compiler/rustc_llvm/llvm-wrapper | |
| parent | 32e7a4b92b109c24e9822c862a7c74436b50e564 (diff) | |
| parent | 9c6a618a7b54eacad05e3d3659c61e3cbdc75963 (diff) | |
| download | rust-cc0a5b73053c62a3df5f84b3ee85079c9b65fa87.tar.gz rust-cc0a5b73053c62a3df5f84b3ee85079c9b65fa87.zip | |
Auto merge of #144718 - Zalathar:rollup-76lrtf2, r=Zalathar
Rollup of 6 pull requests Successful merges: - rust-lang/rust#135975 (Implement `push_mut`) - rust-lang/rust#143672 (Fix Box allocator drop elaboration) - rust-lang/rust#144232 (Implement support for `become` and explicit tail call codegen for the LLVM backend) - rust-lang/rust#144663 (coverage: Re-land "Enlarge empty spans during MIR instrumentation") - rust-lang/rust#144685 (Only extract lang items once in codegen_fn_attrs) - rust-lang/rust#144717 (Move `rustc_middle::parameterized`) r? `@ghost` `@rustbot` modify labels: rollup
Diffstat (limited to 'compiler/rustc_llvm/llvm-wrapper')
| -rw-r--r-- | compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp b/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp index c9814beedd6..588d867bbbf 100644 --- a/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp +++ b/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp @@ -1986,3 +1986,29 @@ 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; + } +} |
