@@ -1041,24 +1041,18 @@ unsafe fn embed_bitcode(
10411041 {
10421042 // We don't need custom section flags, create LLVM globals.
10431043 let llconst = common:: bytes_in_context ( llcx, bitcode) ;
1044- let llglobal = llvm:: LLVMAddGlobal (
1045- llmod,
1046- common:: val_ty ( llconst) ,
1047- c"rustc.embedded.module" . as_ptr ( ) ,
1048- ) ;
1049- llvm:: LLVMSetInitializer ( llglobal, llconst) ;
1044+ let llglobal =
1045+ llvm:: add_global ( llmod, common:: val_ty ( llconst) , c"rustc.embedded.module" ) ;
1046+ llvm:: set_initializer ( llglobal, llconst) ;
10501047
10511048 llvm:: set_section ( llglobal, bitcode_section_name ( cgcx) ) ;
10521049 llvm:: set_linkage ( llglobal, llvm:: Linkage :: PrivateLinkage ) ;
10531050 llvm:: LLVMSetGlobalConstant ( llglobal, llvm:: True ) ;
10541051
10551052 let llconst = common:: bytes_in_context ( llcx, cmdline. as_bytes ( ) ) ;
1056- let llglobal = llvm:: LLVMAddGlobal (
1057- llmod,
1058- common:: val_ty ( llconst) ,
1059- c"rustc.embedded.cmdline" . as_ptr ( ) ,
1060- ) ;
1061- llvm:: LLVMSetInitializer ( llglobal, llconst) ;
1053+ let llglobal =
1054+ llvm:: add_global ( llmod, common:: val_ty ( llconst) , c"rustc.embedded.cmdline" ) ;
1055+ llvm:: set_initializer ( llglobal, llconst) ;
10621056 let section = if cgcx. target_is_like_osx {
10631057 c"__LLVM,__cmdline"
10641058 } else if cgcx. target_is_like_aix {
@@ -1098,31 +1092,29 @@ fn create_msvc_imps(
10981092 // underscores added in front).
10991093 let prefix = if cgcx. target_arch == "x86" { "\x01 __imp__" } else { "\x01 __imp_" } ;
11001094
1101- unsafe {
1102- let ptr_ty = Type :: ptr_llcx ( llcx) ;
1103- let globals = base:: iter_globals ( llmod)
1104- . filter ( |& val| {
1105- llvm:: get_linkage ( val) == llvm:: Linkage :: ExternalLinkage
1106- && llvm:: LLVMIsDeclaration ( val) == 0
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 < _ > > ( ) ;
1095+ let ptr_ty = Type :: ptr_llcx ( llcx) ;
1096+ let globals = base:: iter_globals ( llmod)
1097+ . filter ( |& val| {
1098+ llvm:: get_linkage ( val) == llvm:: Linkage :: ExternalLinkage && llvm:: is_declaration ( val)
1099+ } )
1100+ . filter_map ( |val| {
1101+ // Exclude some symbols that we know are not Rust symbols.
1102+ let name = llvm:: get_value_name ( val) ;
1103+ if ignored ( name) { None } else { Some ( ( val, name) ) }
1104+ } )
1105+ . map ( move |( val, name) | {
1106+ let mut imp_name = prefix. as_bytes ( ) . to_vec ( ) ;
1107+ imp_name. extend ( name) ;
1108+ let imp_name = CString :: new ( imp_name) . unwrap ( ) ;
1109+ ( imp_name, val)
1110+ } )
1111+ . collect :: < Vec < _ > > ( ) ;
11201112
1121- for ( imp_name, val) in globals {
1122- let imp = llvm:: LLVMAddGlobal ( llmod, ptr_ty, imp_name. as_ptr ( ) ) ;
1123- llvm :: LLVMSetInitializer ( imp , val ) ;
1124- llvm:: set_linkage ( imp, llvm :: Linkage :: ExternalLinkage ) ;
1125- }
1113+ for ( imp_name, val) in globals {
1114+ let imp = llvm:: add_global ( llmod, ptr_ty, & imp_name) ;
1115+
1116+ llvm:: set_initializer ( imp, val ) ;
1117+ llvm :: set_linkage ( imp , llvm :: Linkage :: ExternalLinkage ) ;
11261118 }
11271119
11281120 // Use this function to exclude certain symbols from `__imp` generation.
0 commit comments