@@ -1038,24 +1038,18 @@ unsafe fn embed_bitcode(
10381038 {
10391039 // We don't need custom section flags, create LLVM globals.
10401040 let llconst = common:: bytes_in_context ( llcx, bitcode) ;
1041- let llglobal = llvm:: LLVMAddGlobal (
1042- llmod,
1043- common:: val_ty ( llconst) ,
1044- c"rustc.embedded.module" . as_ptr ( ) ,
1045- ) ;
1046- llvm:: LLVMSetInitializer ( llglobal, llconst) ;
1041+ let llglobal =
1042+ llvm:: add_global ( llmod, common:: val_ty ( llconst) , c"rustc.embedded.module" ) ;
1043+ llvm:: set_initializer ( llglobal, llconst) ;
10471044
10481045 llvm:: set_section ( llglobal, bitcode_section_name ( cgcx) ) ;
10491046 llvm:: set_linkage ( llglobal, llvm:: Linkage :: PrivateLinkage ) ;
10501047 llvm:: LLVMSetGlobalConstant ( llglobal, llvm:: True ) ;
10511048
10521049 let llconst = common:: bytes_in_context ( llcx, cmdline. as_bytes ( ) ) ;
1053- let llglobal = llvm:: LLVMAddGlobal (
1054- llmod,
1055- common:: val_ty ( llconst) ,
1056- c"rustc.embedded.cmdline" . as_ptr ( ) ,
1057- ) ;
1058- llvm:: LLVMSetInitializer ( llglobal, llconst) ;
1050+ let llglobal =
1051+ llvm:: add_global ( llmod, common:: val_ty ( llconst) , c"rustc.embedded.cmdline" ) ;
1052+ llvm:: set_initializer ( llglobal, llconst) ;
10591053 let section = if cgcx. target_is_like_osx {
10601054 c"__LLVM,__cmdline"
10611055 } else if cgcx. target_is_like_aix {
@@ -1095,31 +1089,29 @@ fn create_msvc_imps(
10951089 // underscores added in front).
10961090 let prefix = if cgcx. target_arch == "x86" { "\x01 __imp__" } else { "\x01 __imp_" } ;
10971091
1098- unsafe {
1099- let ptr_ty = Type :: ptr_llcx ( llcx) ;
1100- let globals = base:: iter_globals ( llmod)
1101- . filter ( |& val| {
1102- llvm:: get_linkage ( val) == llvm:: Linkage :: ExternalLinkage
1103- && llvm:: LLVMIsDeclaration ( val) == 0
1104- } )
1105- . filter_map ( |val| {
1106- // Exclude some symbols that we know are not Rust symbols.
1107- let name = llvm:: get_value_name ( val) ;
1108- if ignored ( name) { None } else { Some ( ( val, name) ) }
1109- } )
1110- . map ( move |( val, name) | {
1111- let mut imp_name = prefix. as_bytes ( ) . to_vec ( ) ;
1112- imp_name. extend ( name) ;
1113- let imp_name = CString :: new ( imp_name) . unwrap ( ) ;
1114- ( imp_name, val)
1115- } )
1116- . collect :: < Vec < _ > > ( ) ;
1092+ let ptr_ty = Type :: ptr_llcx ( llcx) ;
1093+ let globals = base:: iter_globals ( llmod)
1094+ . filter ( |& val| {
1095+ llvm:: get_linkage ( val) == llvm:: Linkage :: ExternalLinkage && llvm:: is_declaration ( val)
1096+ } )
1097+ . filter_map ( |val| {
1098+ // Exclude some symbols that we know are not Rust symbols.
1099+ let name = llvm:: get_value_name ( val) ;
1100+ if ignored ( name) { None } else { Some ( ( val, name) ) }
1101+ } )
1102+ . map ( move |( val, name) | {
1103+ let mut imp_name = prefix. as_bytes ( ) . to_vec ( ) ;
1104+ imp_name. extend ( name) ;
1105+ let imp_name = CString :: new ( imp_name) . unwrap ( ) ;
1106+ ( imp_name, val)
1107+ } )
1108+ . collect :: < Vec < _ > > ( ) ;
11171109
1118- for ( imp_name, val) in globals {
1119- let imp = llvm:: LLVMAddGlobal ( llmod, ptr_ty, imp_name. as_ptr ( ) ) ;
1120- llvm :: LLVMSetInitializer ( imp , val ) ;
1121- llvm:: set_linkage ( imp, llvm :: Linkage :: ExternalLinkage ) ;
1122- }
1110+ for ( imp_name, val) in globals {
1111+ let imp = llvm:: add_global ( llmod, ptr_ty, & imp_name) ;
1112+
1113+ llvm:: set_initializer ( imp, val ) ;
1114+ llvm :: set_linkage ( imp , llvm :: Linkage :: ExternalLinkage ) ;
11231115 }
11241116
11251117 // Use this function to exclude certain symbols from `__imp` generation.
0 commit comments