diff options
| author | bors <bors@rust-lang.org> | 2024-04-25 04:31:56 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2024-04-25 04:31:56 +0000 |
| commit | 284f94f9c0f77ad4ef85323a634cfda29c1a801d (patch) | |
| tree | d0857c02932df2dc5d1d32691edd1ae5a06e0e86 /compiler/rustc_codegen_llvm/src/llvm/ffi.rs | |
| parent | cb3752d20e0f5d24348062211102a08d46fbecff (diff) | |
| parent | 976267b5141ef9a72ba3cb9edf01ca3bc53ec81e (diff) | |
| download | rust-284f94f9c0f77ad4ef85323a634cfda29c1a801d.tar.gz rust-284f94f9c0f77ad4ef85323a634cfda29c1a801d.zip | |
Auto merge of #121298 - nikic:writable, r=cuviper
Set writable and dead_on_unwind attributes for sret arguments Set the `writable` and `dead_on_unwind` attributes for `sret` arguments. This allows call slot optimization to remove more memcpy's. See https://llvm.org/docs/LangRef.html#parameter-attributes for the specification of these attributes. In short, the statement we're making here is that: * The return slot is writable. * The return slot will not be read if the function unwinds. Fixes https://github.com/rust-lang/rust/issues/90595.
Diffstat (limited to 'compiler/rustc_codegen_llvm/src/llvm/ffi.rs')
| -rw-r--r-- | compiler/rustc_codegen_llvm/src/llvm/ffi.rs | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/compiler/rustc_codegen_llvm/src/llvm/ffi.rs b/compiler/rustc_codegen_llvm/src/llvm/ffi.rs index a10dc61967e..7a34e21628d 100644 --- a/compiler/rustc_codegen_llvm/src/llvm/ffi.rs +++ b/compiler/rustc_codegen_llvm/src/llvm/ffi.rs @@ -200,6 +200,8 @@ pub enum AttributeKind { AllocAlign = 39, SanitizeSafeStack = 40, FnRetThunkExtern = 41, + Writable = 42, + DeadOnUnwind = 43, } /// LLVMIntPredicate |
