about summary refs log tree commit diff
path: root/compiler/rustc_codegen_llvm/src/llvm/mod.rs
diff options
context:
space:
mode:
authorZalathar <Zalathar@users.noreply.github.com>2024-10-29 13:38:17 +1100
committerZalathar <Zalathar@users.noreply.github.com>2024-10-29 21:40:34 +1100
commit8d2ed4f0f3f79c402d2ebe585e0904baf4f8d634 (patch)
tree50eee742cada974772b7d8acf8346de68c99fe20 /compiler/rustc_codegen_llvm/src/llvm/mod.rs
parentba81dbf3c6bc4b647f9f1eb0e6da7f318c647a84 (diff)
downloadrust-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.rs29
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(),
+        );
+    }
+}