diff options
| author | Zalathar <Zalathar@users.noreply.github.com> | 2024-10-29 13:38:17 +1100 |
|---|---|---|
| committer | Zalathar <Zalathar@users.noreply.github.com> | 2024-10-29 21:40:34 +1100 |
| commit | 8d2ed4f0f3f79c402d2ebe585e0904baf4f8d634 (patch) | |
| tree | 50eee742cada974772b7d8acf8346de68c99fe20 /compiler/rustc_codegen_llvm/src/llvm/mod.rs | |
| parent | ba81dbf3c6bc4b647f9f1eb0e6da7f318c647a84 (diff) | |
| download | rust-8d2ed4f0f3f79c402d2ebe585e0904baf4f8d634.tar.gz rust-8d2ed4f0f3f79c402d2ebe585e0904baf4f8d634.zip | |
Clean up FFI calls for setting module flags
- Don't rely on enum values defined by LLVM's C++ API - Use safe wrapper functions instead of direct `unsafe` calls - Consistently pass pointer/length strings instead of C strings
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(), + ); + } +} |
