@@ -1049,24 +1049,18 @@ unsafe fn embed_bitcode(
10491049 {
10501050 // We don't need custom section flags, create LLVM globals.
10511051 let llconst = common:: bytes_in_context ( llcx, bitcode) ;
1052- let llglobal = llvm:: LLVMAddGlobal (
1053- llmod,
1054- common:: val_ty ( llconst) ,
1055- c"rustc.embedded.module" . as_ptr ( ) ,
1056- ) ;
1057- llvm:: LLVMSetInitializer ( llglobal, llconst) ;
1052+ let llglobal =
1053+ llvm:: add_global ( llmod, common:: val_ty ( llconst) , c"rustc.embedded.module" ) ;
1054+ llvm:: set_initializer ( llglobal, llconst) ;
10581055
10591056 llvm:: set_section ( llglobal, bitcode_section_name ( cgcx) ) ;
10601057 llvm:: set_linkage ( llglobal, llvm:: Linkage :: PrivateLinkage ) ;
10611058 llvm:: LLVMSetGlobalConstant ( llglobal, llvm:: True ) ;
10621059
10631060 let llconst = common:: bytes_in_context ( llcx, cmdline. as_bytes ( ) ) ;
1064- let llglobal = llvm:: LLVMAddGlobal (
1065- llmod,
1066- common:: val_ty ( llconst) ,
1067- c"rustc.embedded.cmdline" . as_ptr ( ) ,
1068- ) ;
1069- llvm:: LLVMSetInitializer ( llglobal, llconst) ;
1061+ let llglobal =
1062+ llvm:: add_global ( llmod, common:: val_ty ( llconst) , c"rustc.embedded.cmdline" ) ;
1063+ llvm:: set_initializer ( llglobal, llconst) ;
10701064 let section = if cgcx. target_is_like_osx {
10711065 c"__LLVM,__cmdline"
10721066 } else if cgcx. target_is_like_aix {
@@ -1106,31 +1100,29 @@ fn create_msvc_imps(
11061100 // underscores added in front).
11071101 let prefix = if cgcx. target_arch == "x86" { "\x01 __imp__" } else { "\x01 __imp_" } ;
11081102
1109- unsafe {
1110- let ptr_ty = Type :: ptr_llcx ( llcx) ;
1111- let globals = base:: iter_globals ( llmod)
1112- . filter ( |& val| {
1113- llvm:: get_linkage ( val) == llvm:: Linkage :: ExternalLinkage
1114- && llvm:: LLVMIsDeclaration ( val) == 0
1115- } )
1116- . filter_map ( |val| {
1117- // Exclude some symbols that we know are not Rust symbols.
1118- let name = llvm:: get_value_name ( val) ;
1119- if ignored ( name) { None } else { Some ( ( val, name) ) }
1120- } )
1121- . map ( move |( val, name) | {
1122- let mut imp_name = prefix. as_bytes ( ) . to_vec ( ) ;
1123- imp_name. extend ( name) ;
1124- let imp_name = CString :: new ( imp_name) . unwrap ( ) ;
1125- ( imp_name, val)
1126- } )
1127- . collect :: < Vec < _ > > ( ) ;
1103+ let ptr_ty = Type :: ptr_llcx ( llcx) ;
1104+ let globals = base:: iter_globals ( llmod)
1105+ . filter ( |& val| {
1106+ llvm:: get_linkage ( val) == llvm:: Linkage :: ExternalLinkage && !llvm:: is_declaration ( val)
1107+ } )
1108+ . filter_map ( |val| {
1109+ // Exclude some symbols that we know are not Rust symbols.
1110+ let name = llvm:: get_value_name ( val) ;
1111+ if ignored ( name) { None } else { Some ( ( val, name) ) }
1112+ } )
1113+ . map ( move |( val, name) | {
1114+ let mut imp_name = prefix. as_bytes ( ) . to_vec ( ) ;
1115+ imp_name. extend ( name) ;
1116+ let imp_name = CString :: new ( imp_name) . unwrap ( ) ;
1117+ ( imp_name, val)
1118+ } )
1119+ . collect :: < Vec < _ > > ( ) ;
11281120
1129- for ( imp_name, val) in globals {
1130- let imp = llvm:: LLVMAddGlobal ( llmod, ptr_ty, imp_name. as_ptr ( ) ) ;
1131- llvm :: LLVMSetInitializer ( imp , val ) ;
1132- llvm:: set_linkage ( imp, llvm :: Linkage :: ExternalLinkage ) ;
1133- }
1121+ for ( imp_name, val) in globals {
1122+ let imp = llvm:: add_global ( llmod, ptr_ty, & imp_name) ;
1123+
1124+ llvm:: set_initializer ( imp, val ) ;
1125+ llvm :: set_linkage ( imp , llvm :: Linkage :: ExternalLinkage ) ;
11341126 }
11351127
11361128 // Use this function to exclude certain symbols from `__imp` generation.
0 commit comments