@@ -111,38 +111,14 @@ pub mod write {
111111 let llmod = trans. module ;
112112 let llcx = trans. context ;
113113 unsafe {
114- llvm:: LLVMInitializePasses ( ) ;
115-
116- // Only initialize the platforms supported by Rust here, because
117- // using --llvm-root will have multiple platforms that rustllvm
118- // doesn't actually link to and it's pointless to put target info
119- // into the registry that Rust can not generate machine code for.
120- llvm:: LLVMInitializeX86TargetInfo ( ) ;
121- llvm:: LLVMInitializeX86Target ( ) ;
122- llvm:: LLVMInitializeX86TargetMC ( ) ;
123- llvm:: LLVMInitializeX86AsmPrinter ( ) ;
124- llvm:: LLVMInitializeX86AsmParser ( ) ;
125-
126- llvm:: LLVMInitializeARMTargetInfo ( ) ;
127- llvm:: LLVMInitializeARMTarget ( ) ;
128- llvm:: LLVMInitializeARMTargetMC ( ) ;
129- llvm:: LLVMInitializeARMAsmPrinter ( ) ;
130- llvm:: LLVMInitializeARMAsmParser ( ) ;
131-
132- llvm:: LLVMInitializeMipsTargetInfo ( ) ;
133- llvm:: LLVMInitializeMipsTarget ( ) ;
134- llvm:: LLVMInitializeMipsTargetMC ( ) ;
135- llvm:: LLVMInitializeMipsAsmPrinter ( ) ;
136- llvm:: LLVMInitializeMipsAsmParser ( ) ;
114+ configure_llvm ( sess) ;
137115
138116 if sess. opts . save_temps {
139117 output. with_extension ( "no-opt.bc" ) . with_c_str ( |buf| {
140118 llvm:: LLVMWriteBitcodeToFile ( llmod, buf) ;
141119 } )
142120 }
143121
144- configure_llvm ( sess) ;
145-
146122 let OptLevel = match sess. opts . optimize {
147123 session:: No => lib:: llvm:: CodeGenLevelNone ,
148124 session:: Less => lib:: llvm:: CodeGenLevelLess ,
@@ -367,6 +343,30 @@ pub mod write {
367343
368344 LOCK . lock ( ) ;
369345 if !CONFIGURED {
346+ llvm:: LLVMInitializePasses ( ) ;
347+
348+ // Only initialize the platforms supported by Rust here, because
349+ // using --llvm-root will have multiple platforms that rustllvm
350+ // doesn't actually link to and it's pointless to put target info
351+ // into the registry that Rust can not generate machine code for.
352+ llvm:: LLVMInitializeX86TargetInfo ( ) ;
353+ llvm:: LLVMInitializeX86Target ( ) ;
354+ llvm:: LLVMInitializeX86TargetMC ( ) ;
355+ llvm:: LLVMInitializeX86AsmPrinter ( ) ;
356+ llvm:: LLVMInitializeX86AsmParser ( ) ;
357+
358+ llvm:: LLVMInitializeARMTargetInfo ( ) ;
359+ llvm:: LLVMInitializeARMTarget ( ) ;
360+ llvm:: LLVMInitializeARMTargetMC ( ) ;
361+ llvm:: LLVMInitializeARMAsmPrinter ( ) ;
362+ llvm:: LLVMInitializeARMAsmParser ( ) ;
363+
364+ llvm:: LLVMInitializeMipsTargetInfo ( ) ;
365+ llvm:: LLVMInitializeMipsTarget ( ) ;
366+ llvm:: LLVMInitializeMipsTargetMC ( ) ;
367+ llvm:: LLVMInitializeMipsAsmPrinter ( ) ;
368+ llvm:: LLVMInitializeMipsAsmParser ( ) ;
369+
370370 llvm:: LLVMRustSetLLVMOptions ( llvm_args. len ( ) as c_int ,
371371 llvm_args. as_ptr ( ) ) ;
372372 CONFIGURED = true ;
0 commit comments