Skip to content

Commit ea71808

Browse files
committed
Create safe helper for LLVMSetDLLStorageClass
1 parent eeb9035 commit ea71808

File tree

3 files changed

+10
-10
lines changed

3 files changed

+10
-10
lines changed

compiler/rustc_codegen_llvm/src/callee.rs

+2-4
Original file line numberDiff line numberDiff line change
@@ -66,9 +66,7 @@ pub(crate) fn get_fn<'ll, 'tcx>(cx: &CodegenCx<'ll, 'tcx>, instance: Instance<'t
6666
// LLVM will prefix the name with `__imp_`. Ideally, we'd like the
6767
// existing logic below to set the Storage Class, but it has an
6868
// exemption for MinGW for backwards compatibility.
69-
unsafe {
70-
llvm::LLVMSetDLLStorageClass(llfn, llvm::DLLStorageClass::DllImport);
71-
}
69+
llvm::set_dllimport_storage_class(llfn);
7270
llfn
7371
} else {
7472
cx.declare_fn(sym, fn_abi, Some(instance))
@@ -150,7 +148,7 @@ pub(crate) fn get_fn<'ll, 'tcx>(cx: &CodegenCx<'ll, 'tcx>, instance: Instance<'t
150148
&& library.kind.is_dllimport()
151149
&& !matches!(tcx.sess.target.env.as_ref(), "gnu" | "uclibc")
152150
{
153-
llvm::LLVMSetDLLStorageClass(llfn, llvm::DLLStorageClass::DllImport);
151+
llvm::set_dllimport_storage_class(llfn);
154152
}
155153

156154
if cx.should_assume_dso_local(llfn, true) {

compiler/rustc_codegen_llvm/src/consts.rs

+2-6
Original file line numberDiff line numberDiff line change
@@ -375,9 +375,7 @@ impl<'ll> CodegenCx<'ll, '_> {
375375
// is actually present in the current crate. We can find out via the
376376
// is_codegened_item query.
377377
if !self.tcx.is_codegened_item(def_id) {
378-
unsafe {
379-
llvm::LLVMSetDLLStorageClass(g, llvm::DLLStorageClass::DllImport);
380-
}
378+
llvm::set_dllimport_storage_class(g);
381379
}
382380
}
383381
}
@@ -387,9 +385,7 @@ impl<'ll> CodegenCx<'ll, '_> {
387385
&& library.kind.is_dllimport()
388386
{
389387
// For foreign (native) libs we know the exact storage type to use.
390-
unsafe {
391-
llvm::LLVMSetDLLStorageClass(g, llvm::DLLStorageClass::DllImport);
392-
}
388+
llvm::set_dllimport_storage_class(g);
393389
}
394390

395391
self.instances.borrow_mut().insert(instance, g);

compiler/rustc_codegen_llvm/src/llvm/mod.rs

+6
Original file line numberDiff line numberDiff line change
@@ -403,3 +403,9 @@ pub(crate) fn add_module_flag_str(
403403
);
404404
}
405405
}
406+
407+
pub(crate) fn set_dllimport_storage_class<'ll>(v: &'ll Value) {
408+
unsafe {
409+
LLVMSetDLLStorageClass(v, DLLStorageClass::DllImport);
410+
}
411+
}

0 commit comments

Comments
 (0)