@@ -172,29 +172,27 @@ fn check_and_apply_linkage<'ll, 'tcx>(
172
172
if let Some ( linkage) = attrs. import_linkage {
173
173
debug ! ( "get_static: sym={} linkage={:?}" , sym, linkage) ;
174
174
175
- unsafe {
176
- // Declare a symbol `foo` with the desired linkage.
177
- let g1 = cx. declare_global ( sym, cx. type_i8 ( ) ) ;
178
- llvm:: LLVMRustSetLinkage ( g1, base:: linkage_to_llvm ( linkage) ) ;
179
-
180
- // Declare an internal global `extern_with_linkage_foo` which
181
- // is initialized with the address of `foo`. If `foo` is
182
- // discarded during linking (for example, if `foo` has weak
183
- // linkage and there are no definitions), then
184
- // `extern_with_linkage_foo` will instead be initialized to
185
- // zero.
186
- let mut real_name = "_rust_extern_with_linkage_" . to_string ( ) ;
187
- real_name. push_str ( sym) ;
188
- let g2 = cx. define_global ( & real_name, llty) . unwrap_or_else ( || {
189
- cx. sess ( ) . dcx ( ) . emit_fatal ( SymbolAlreadyDefined {
190
- span : cx. tcx . def_span ( def_id) ,
191
- symbol_name : sym,
192
- } )
193
- } ) ;
194
- llvm:: LLVMRustSetLinkage ( g2, llvm:: Linkage :: InternalLinkage ) ;
195
- llvm:: LLVMSetInitializer ( g2, g1) ;
196
- g2
197
- }
175
+ // Declare a symbol `foo` with the desired linkage.
176
+ let g1 = cx. declare_global ( sym, cx. type_i8 ( ) ) ;
177
+ llvm:: set_linkage ( g1, base:: linkage_to_llvm ( linkage) ) ;
178
+
179
+ // Declare an internal global `extern_with_linkage_foo` which
180
+ // is initialized with the address of `foo`. If `foo` is
181
+ // discarded during linking (for example, if `foo` has weak
182
+ // linkage and there are no definitions), then
183
+ // `extern_with_linkage_foo` will instead be initialized to
184
+ // zero.
185
+ let mut real_name = "_rust_extern_with_linkage_" . to_string ( ) ;
186
+ real_name. push_str ( sym) ;
187
+ let g2 = cx. define_global ( & real_name, llty) . unwrap_or_else ( || {
188
+ cx. sess ( ) . dcx ( ) . emit_fatal ( SymbolAlreadyDefined {
189
+ span : cx. tcx . def_span ( def_id) ,
190
+ symbol_name : sym,
191
+ } )
192
+ } ) ;
193
+ llvm:: set_linkage ( g2, llvm:: Linkage :: InternalLinkage ) ;
194
+ unsafe { llvm:: LLVMSetInitializer ( g2, g1) } ;
195
+ g2
198
196
} else if cx. tcx . sess . target . arch == "x86"
199
197
&& let Some ( dllimport) = crate :: common:: get_dllimport ( cx. tcx , def_id, sym)
200
198
{
@@ -224,23 +222,21 @@ impl<'ll> CodegenCx<'ll, '_> {
224
222
align : Align ,
225
223
kind : Option < & str > ,
226
224
) -> & ' ll Value {
227
- unsafe {
228
- let gv = match kind {
229
- Some ( kind) if !self . tcx . sess . fewer_names ( ) => {
230
- let name = self . generate_local_symbol_name ( kind) ;
231
- let gv = self . define_global ( & name, self . val_ty ( cv) ) . unwrap_or_else ( || {
232
- bug ! ( "symbol `{}` is already defined" , name) ;
233
- } ) ;
234
- llvm:: LLVMRustSetLinkage ( gv, llvm:: Linkage :: PrivateLinkage ) ;
235
- gv
236
- }
237
- _ => self . define_private_global ( self . val_ty ( cv) ) ,
238
- } ;
239
- llvm:: LLVMSetInitializer ( gv, cv) ;
240
- set_global_alignment ( self , gv, align) ;
241
- llvm:: SetUnnamedAddress ( gv, llvm:: UnnamedAddr :: Global ) ;
242
- gv
243
- }
225
+ let gv = match kind {
226
+ Some ( kind) if !self . tcx . sess . fewer_names ( ) => {
227
+ let name = self . generate_local_symbol_name ( kind) ;
228
+ let gv = self . define_global ( & name, self . val_ty ( cv) ) . unwrap_or_else ( || {
229
+ bug ! ( "symbol `{}` is already defined" , name) ;
230
+ } ) ;
231
+ llvm:: set_linkage ( gv, llvm:: Linkage :: PrivateLinkage ) ;
232
+ gv
233
+ }
234
+ _ => self . define_private_global ( self . val_ty ( cv) ) ,
235
+ } ;
236
+ unsafe { llvm:: LLVMSetInitializer ( gv, cv) } ;
237
+ set_global_alignment ( self , gv, align) ;
238
+ llvm:: SetUnnamedAddress ( gv, llvm:: UnnamedAddr :: Global ) ;
239
+ gv
244
240
}
245
241
246
242
#[ instrument( level = "debug" , skip( self ) ) ]
@@ -292,9 +288,7 @@ impl<'ll> CodegenCx<'ll, '_> {
292
288
let g = self . declare_global ( sym, llty) ;
293
289
294
290
if !self . tcx . is_reachable_non_generic ( def_id) {
295
- unsafe {
296
- llvm:: LLVMRustSetVisibility ( g, llvm:: Visibility :: Hidden ) ;
297
- }
291
+ llvm:: set_visibility ( g, llvm:: Visibility :: Hidden ) ;
298
292
}
299
293
300
294
g
@@ -312,7 +306,7 @@ impl<'ll> CodegenCx<'ll, '_> {
312
306
llvm:: set_thread_local_mode ( g, self . tls_model ) ;
313
307
}
314
308
315
- let dso_local = unsafe { self . should_assume_dso_local ( g, true ) } ;
309
+ let dso_local = self . should_assume_dso_local ( g, true ) ;
316
310
if dso_local {
317
311
unsafe {
318
312
llvm:: LLVMRustSetDSOLocal ( g, true ) ;
@@ -401,8 +395,8 @@ impl<'ll> CodegenCx<'ll, '_> {
401
395
let name = llvm:: get_value_name ( g) . to_vec ( ) ;
402
396
llvm:: set_value_name ( g, b"" ) ;
403
397
404
- let linkage = llvm:: LLVMRustGetLinkage ( g) ;
405
- let visibility = llvm:: LLVMRustGetVisibility ( g) ;
398
+ let linkage = llvm:: get_linkage ( g) ;
399
+ let visibility = llvm:: get_visibility ( g) ;
406
400
407
401
let new_g = llvm:: LLVMRustGetOrInsertGlobal (
408
402
self . llmod ,
@@ -411,8 +405,8 @@ impl<'ll> CodegenCx<'ll, '_> {
411
405
val_llty,
412
406
) ;
413
407
414
- llvm:: LLVMRustSetLinkage ( new_g, linkage) ;
415
- llvm:: LLVMRustSetVisibility ( new_g, visibility) ;
408
+ llvm:: set_linkage ( new_g, linkage) ;
409
+ llvm:: set_visibility ( new_g, visibility) ;
416
410
417
411
// The old global has had its name removed but is returned by
418
412
// get_static since it is in the instance cache. Provide an
0 commit comments