@@ -29,7 +29,6 @@ use rustc_hir::def::CtorKind;
2929use rustc_hir:: def_id:: { CrateNum , DefId , LOCAL_CRATE } ;
3030use rustc_index:: vec:: { Idx , IndexVec } ;
3131use rustc_middle:: ich:: NodeIdHashingMode ;
32- use rustc_middle:: middle:: codegen_fn_attrs:: CodegenFnAttrFlags ;
3332use rustc_middle:: mir:: interpret:: truncate;
3433use rustc_middle:: mir:: { self , Field , GeneratorLayout } ;
3534use rustc_middle:: ty:: layout:: { self , IntegerExt , PrimitiveExt , TyAndLayout } ;
@@ -2299,9 +2298,7 @@ pub fn create_global_var_metadata(cx: &CodegenCx<'ll, '_>, def_id: DefId, global
22992298 }
23002299
23012300 let tcx = cx. tcx ;
2302- let attrs = tcx. codegen_fn_attrs ( def_id) ;
23032301
2304- let no_mangle = attrs. flags . contains ( CodegenFnAttrFlags :: NO_MANGLE ) ;
23052302 // We may want to remove the namespace scope if we're in an extern block (see
23062303 // https://github.com/rust-lang/rust/pull/46457#issuecomment-351750952).
23072304 let var_scope = get_namespace_for_item ( cx, def_id) ;
@@ -2318,14 +2315,11 @@ pub fn create_global_var_metadata(cx: &CodegenCx<'ll, '_>, def_id: DefId, global
23182315 let variable_type = Instance :: mono ( cx. tcx , def_id) . monomorphic_ty ( cx. tcx ) ;
23192316 let type_metadata = type_metadata ( cx, variable_type, span) ;
23202317 let var_name = tcx. item_name ( def_id) . as_str ( ) ;
2321- let linkage_name = if no_mangle {
2322- None
2323- } else {
2324- Some ( mangled_name_of_instance ( cx, Instance :: mono ( tcx, def_id) ) . name . as_str ( ) )
2325- } ;
2318+ let linkage_name: & str =
2319+ & mangled_name_of_instance ( cx, Instance :: mono ( tcx, def_id) ) . name . as_str ( ) ;
23262320 // When empty, linkage_name field is omitted,
23272321 // which is what we want for no_mangle statics
2328- let linkage_name = linkage_name. as_deref ( ) . unwrap_or ( "" ) ;
2322+ let linkage_name = if var_name == linkage_name { "" } else { linkage_name } ;
23292323
23302324 let global_align = cx. align_of ( variable_type) ;
23312325
0 commit comments