diff options
| author | Matthias Krüger <matthias.krueger@famsik.de> | 2024-10-29 18:38:59 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-29 18:38:59 +0100 |
| commit | 2707cd670c2d3ea4742d3b447d5e09d872161c5a (patch) | |
| tree | d09b60201fd0895fde38e8964e55c11112090914 /compiler/rustc_codegen_llvm/src/llvm/mod.rs | |
| parent | 1e3c0da9a066dcccf0c253b67d6da4f23190340c (diff) | |
| parent | 8d2ed4f0f3f79c402d2ebe585e0904baf4f8d634 (diff) | |
| download | rust-2707cd670c2d3ea4742d3b447d5e09d872161c5a.tar.gz rust-2707cd670c2d3ea4742d3b447d5e09d872161c5a.zip | |
Rollup merge of #132319 - Zalathar:add-module-flag, r=jieyouxu
cg_llvm: Clean up FFI calls for setting module flags This is a combination of several inter-related changes to how module flags are set: - Remove some unnecessary code for setting an `"LTOPostLink"` flag, which has been obsolete since LLVM 17. - Define our own enum instead of relying on enum values defined by LLVM's unstable C++ API. - Use safe wrapper functions to set module flags, instead of direct `unsafe` calls. - Consistently pass pointer/length strings instead of C strings. - Remove or shrink some `unsafe` blocks.
Diffstat (limited to 'compiler/rustc_codegen_llvm/src/llvm/mod.rs')
| -rw-r--r-- | compiler/rustc_codegen_llvm/src/llvm/mod.rs | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/compiler/rustc_codegen_llvm/src/llvm/mod.rs b/compiler/rustc_codegen_llvm/src/llvm/mod.rs index cabe6c031d3..acd425bbb8e 100644 --- a/compiler/rustc_codegen_llvm/src/llvm/mod.rs +++ b/compiler/rustc_codegen_llvm/src/llvm/mod.rs @@ -352,3 +352,32 @@ impl Drop for OperandBundleDef<'_> { } } } + +pub(crate) fn add_module_flag_u32( + module: &Module, + merge_behavior: ModuleFlagMergeBehavior, + key: &str, + value: u32, +) { + unsafe { + LLVMRustAddModuleFlagU32(module, merge_behavior, key.as_c_char_ptr(), key.len(), value); + } +} + +pub(crate) fn add_module_flag_str( + module: &Module, + merge_behavior: ModuleFlagMergeBehavior, + key: &str, + value: &str, +) { + unsafe { + LLVMRustAddModuleFlagString( + module, + merge_behavior, + key.as_c_char_ptr(), + key.len(), + value.as_c_char_ptr(), + value.len(), + ); + } +} |
