Skip to content

Commit b114040

Browse files
committed
Use safe wrappers get_visibility and set_visibility
1 parent 983d258 commit b114040

5 files changed

Lines changed: 20 additions & 33 deletions

File tree

‎compiler/rustc_codegen_llvm/src/allocator.rs‎

Lines changed: 4 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -77,20 +77,14 @@ pub(crate) unsafe fn codegen(
7777
// __rust_alloc_error_handler_should_panic
7878
let name = OomStrategy::SYMBOL;
7979
let ll_g = llvm::LLVMRustGetOrInsertGlobal(llmod, name.as_ptr().cast(), name.len(), i8);
80-
llvm::LLVMRustSetVisibility(
81-
ll_g,
82-
llvm::Visibility::from_generic(tcx.sess.default_visibility()),
83-
);
80+
llvm::set_visibility(ll_g, llvm::Visibility::from_generic(tcx.sess.default_visibility()));
8481
let val = tcx.sess.opts.unstable_opts.oom.should_panic();
8582
let llval = llvm::LLVMConstInt(i8, val asu64,False);
8683
llvm::LLVMSetInitializer(ll_g, llval);
8784

8885
let name = NO_ALLOC_SHIM_IS_UNSTABLE;
8986
let ll_g = llvm::LLVMRustGetOrInsertGlobal(llmod, name.as_ptr().cast(), name.len(), i8);
90-
llvm::LLVMRustSetVisibility(
91-
ll_g,
92-
llvm::Visibility::from_generic(tcx.sess.default_visibility()),
93-
);
87+
llvm::set_visibility(ll_g, llvm::Visibility::from_generic(tcx.sess.default_visibility()));
9488
let llval = llvm::LLVMConstInt(i8,0,False);
9589
llvm::LLVMSetInitializer(ll_g, llval);
9690
}
@@ -134,10 +128,7 @@ fn create_wrapper_function(
134128
None
135129
};
136130

137-
llvm::LLVMRustSetVisibility(
138-
llfn,
139-
llvm::Visibility::from_generic(tcx.sess.default_visibility()),
140-
);
131+
llvm::set_visibility(llfn, llvm::Visibility::from_generic(tcx.sess.default_visibility()));
141132

142133
if tcx.sess.must_emit_unwind_tables(){
143134
let uwtable =
@@ -151,7 +142,7 @@ fn create_wrapper_function(
151142
// -> ! DIFlagNoReturn
152143
attributes::apply_to_llfn(callee, llvm::AttributePlace::Function,&[no_return]);
153144
}
154-
llvm::LLVMRustSetVisibility(callee, llvm::Visibility::Hidden);
145+
llvm::set_visibility(callee, llvm::Visibility::Hidden);
155146

156147
let llbb = llvm::LLVMAppendBasicBlockInContext(llcx, llfn,c"entry".as_ptr());
157148

‎compiler/rustc_codegen_llvm/src/callee.rs‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ pub(crate) fn get_fn<'ll, 'tcx>(cx: &CodegenCx<'ll, 'tcx>, instance: Instance<'t
135135
|| !cx.tcx.is_reachable_non_generic(instance_def_id))
136136
};
137137
if is_hidden {
138-
llvm::LLVMRustSetVisibility(llfn, llvm::Visibility::Hidden);
138+
llvm::set_visibility(llfn, llvm::Visibility::Hidden);
139139
}
140140

141141
// MinGW: For backward compatibility we rely on the linker to decide whether it

‎compiler/rustc_codegen_llvm/src/consts.rs‎

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -288,9 +288,7 @@ impl<'ll> CodegenCx<'ll, '_> {
288288
let g = self.declare_global(sym, llty);
289289

290290
if !self.tcx.is_reachable_non_generic(def_id){
291-
unsafe{
292-
llvm::LLVMRustSetVisibility(g, llvm::Visibility::Hidden);
293-
}
291+
llvm::set_visibility(g, llvm::Visibility::Hidden);
294292
}
295293

296294
g
@@ -308,7 +306,7 @@ impl<'ll> CodegenCx<'ll, '_> {
308306
llvm::set_thread_local_mode(g,self.tls_model);
309307
}
310308

311-
let dso_local = unsafe{self.should_assume_dso_local(g,true)};
309+
let dso_local = self.should_assume_dso_local(g,true);
312310
if dso_local {
313311
unsafe{
314312
llvm::LLVMRustSetDSOLocal(g,true);
@@ -398,7 +396,7 @@ impl<'ll> CodegenCx<'ll, '_> {
398396
llvm::set_value_name(g,b"");
399397

400398
let linkage = llvm::get_linkage(g);
401-
let visibility = llvm::LLVMRustGetVisibility(g);
399+
let visibility = llvm::get_visibility(g);
402400

403401
let new_g = llvm::LLVMRustGetOrInsertGlobal(
404402
self.llmod,
@@ -408,7 +406,7 @@ impl<'ll> CodegenCx<'ll, '_> {
408406
);
409407

410408
llvm::set_linkage(new_g, linkage);
411-
llvm::LLVMRustSetVisibility(new_g, visibility);
409+
llvm::set_visibility(new_g, visibility);
412410

413411
// The old global has had its name removed but is returned by
414412
// get_static since it is in the instance cache. Provide an

‎compiler/rustc_codegen_llvm/src/llvm/mod.rs‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,10 @@ pub fn set_linkage(llglobal: &Value, linkage: Linkage) {
242242
}
243243
}
244244

245+
pubfnget_visibility(llglobal:&Value) -> Visibility{
246+
unsafe{LLVMRustGetVisibility(llglobal)}
247+
}
248+
245249
pubfnset_visibility(llglobal:&Value,visibility:Visibility){
246250
unsafe{
247251
LLVMRustSetVisibility(llglobal, visibility);

‎compiler/rustc_codegen_llvm/src/mono_item.rs‎

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ impl<'tcx> PreDefineCodegenMethods<'tcx> for CodegenCx<'_, 'tcx> {
4040
});
4141

4242
llvm::set_linkage(g, base::linkage_to_llvm(linkage));
43+
llvm::set_visibility(g, base::visibility_to_llvm(visibility));
4344
unsafe{
44-
llvm::LLVMRustSetVisibility(g, base::visibility_to_llvm(visibility));
4545
ifself.should_assume_dso_local(g,false){
4646
llvm::LLVMRustSetDSOLocal(g,true);
4747
}
@@ -78,21 +78,15 @@ impl<'tcx> PreDefineCodegenMethods<'tcx> for CodegenCx<'_, 'tcx> {
7878
&& linkage != Linkage::Private
7979
&& self.tcx.is_compiler_builtins(LOCAL_CRATE)
8080
{
81-
unsafe{
82-
llvm::LLVMRustSetVisibility(lldecl, llvm::Visibility::Hidden);
83-
}
81+
llvm::set_visibility(lldecl, llvm::Visibility::Hidden);
8482
}else{
85-
unsafe{
86-
llvm::LLVMRustSetVisibility(lldecl, base::visibility_to_llvm(visibility));
87-
}
83+
llvm::set_visibility(lldecl, base::visibility_to_llvm(visibility));
8884
}
8985

9086
debug!("predefine_fn: instance = {:?}", instance);
9187

92-
unsafe{
93-
ifself.should_assume_dso_local(lldecl,false){
94-
llvm::LLVMRustSetDSOLocal(lldecl,true);
95-
}
88+
ifself.should_assume_dso_local(lldecl,false){
89+
unsafe{ llvm::LLVMRustSetDSOLocal(lldecl,true)};
9690
}
9791

9892
self.instances.borrow_mut().insert(instance, lldecl);
@@ -102,13 +96,13 @@ impl<'tcx> PreDefineCodegenMethods<'tcx> for CodegenCx<'_, 'tcx> {
10296
implCodegenCx<'_,'_>{
10397
/// Whether a definition or declaration can be assumed to be local to a group of
10498
/// libraries that form a single DSO or executable.
105-
pub(crate)unsafefnshould_assume_dso_local(
99+
pub(crate)fnshould_assume_dso_local(
106100
&self,
107101
llval:&llvm::Value,
108102
is_declaration:bool,
109103
) -> bool{
110104
let linkage = llvm::get_linkage(llval);
111-
let visibility = unsafe{llvm::LLVMRustGetVisibility(llval)};
105+
let visibility = llvm::get_visibility(llval);
112106

113107
ifmatches!(linkage, llvm::Linkage::InternalLinkage | llvm::Linkage::PrivateLinkage){
114108
returntrue;

0 commit comments

Comments
 (0)