Only initialize targets that are actually supported / linked to in RustWrapper

This commit is contained in:
Zack Corr 2012-07-21 17:20:45 +10:00 committed by Graydon Hoare
parent de5c15edfb
commit 480fa7c00e
2 changed files with 18 additions and 4 deletions

View file

@ -75,6 +75,12 @@ extern "C" bool LLVMLinkModules(LLVMModuleRef Dest, LLVMModuleRef Src) {
return true; return true;
} }
void LLVMInitializeX86TargetInfo();
void LLVMInitializeX86Target();
void LLVMInitializeX86TargetMC();
void LLVMInitializeX86AsmPrinter();
void LLVMInitializeX86AsmParser();
extern "C" bool extern "C" bool
LLVMRustWriteOutputFile(LLVMPassManagerRef PMR, LLVMRustWriteOutputFile(LLVMPassManagerRef PMR,
LLVMModuleRef M, LLVMModuleRef M,
@ -84,10 +90,16 @@ LLVMRustWriteOutputFile(LLVMPassManagerRef PMR,
CodeGenOpt::Level OptLevel, CodeGenOpt::Level OptLevel,
bool EnableSegmentedStacks) { bool EnableSegmentedStacks) {
InitializeAllTargets(); // Only initialize the platforms supported by Rust here,
InitializeAllTargetMCs(); // because using --llvm-root will have multiple platforms
InitializeAllAsmPrinters(); // that rustllvm doesn't actually link to and it's pointless to put target info
InitializeAllAsmParsers(); // into the registry that Rust can not generate machine code for.
LLVMInitializeX86TargetInfo();
LLVMInitializeX86Target();
LLVMInitializeX86TargetMC();
LLVMInitializeX86AsmPrinter();
LLVMInitializeX86AsmParser();
TargetOptions Options; TargetOptions Options;
Options.NoFramePointerElim = true; Options.NoFramePointerElim = true;

View file

@ -390,6 +390,8 @@ LLVMInitializeX86Disassembler
LLVMInitializeX86Disassembler LLVMInitializeX86Disassembler
LLVMInitializeX86Target LLVMInitializeX86Target
LLVMInitializeX86Target LLVMInitializeX86Target
LLVMInitializeX86TargetMC
LLVMInitializeX86TargetMC
LLVMInitializeX86TargetInfo LLVMInitializeX86TargetInfo
LLVMInitializeX86TargetInfo LLVMInitializeX86TargetInfo
LLVMInsertBasicBlock LLVMInsertBasicBlock