@@ -75,6 +75,12 @@ extern "C" bool LLVMLinkModules(LLVMModuleRef Dest, LLVMModuleRef Src) {
75
75
return true ;
76
76
}
77
77
78
+ void LLVMInitializeX86TargetInfo ();
79
+ void LLVMInitializeX86Target ();
80
+ void LLVMInitializeX86TargetMC ();
81
+ void LLVMInitializeX86AsmPrinter ();
82
+ void LLVMInitializeX86AsmParser ();
83
+
78
84
extern " C" bool
79
85
LLVMRustWriteOutputFile (LLVMPassManagerRef PMR,
80
86
LLVMModuleRef M,
@@ -84,10 +90,16 @@ LLVMRustWriteOutputFile(LLVMPassManagerRef PMR,
84
90
CodeGenOpt::Level OptLevel,
85
91
bool EnableSegmentedStacks) {
86
92
87
- InitializeAllTargets ();
88
- InitializeAllTargetMCs ();
89
- InitializeAllAsmPrinters ();
90
- InitializeAllAsmParsers ();
93
+ // Only initialize the platforms supported by Rust here,
94
+ // because using --llvm-root will have multiple platforms
95
+ // that rustllvm doesn't actually link to and it's pointless to put target info
96
+ // into the registry that Rust can not generate machine code for.
97
+
98
+ LLVMInitializeX86TargetInfo ();
99
+ LLVMInitializeX86Target ();
100
+ LLVMInitializeX86TargetMC ();
101
+ LLVMInitializeX86AsmPrinter ();
102
+ LLVMInitializeX86AsmParser ();
91
103
92
104
TargetOptions Options;
93
105
Options.NoFramePointerElim = true ;
0 commit comments