ELF: Split BitcodeCompiler::compile.
http://reviews.llvm.org/D18410 llvm-svn: 264193
This commit is contained in:
parent
f2e71244c6
commit
961f2ff21e
|
@ -111,23 +111,7 @@ std::unique_ptr<elf::ObjectFile<ELFT>> BitcodeCompiler::compile() {
|
|||
if (Config->SaveTemps)
|
||||
saveBCFile(Combined, ".lto.bc");
|
||||
|
||||
StringRef TripleStr = Combined.getTargetTriple();
|
||||
Triple TheTriple(TripleStr);
|
||||
|
||||
// FIXME: Should we have a default triple? The gold plugin uses
|
||||
// sys::getDefaultTargetTriple(), but that is probably wrong given that this
|
||||
// might be a cross linker.
|
||||
|
||||
std::string ErrMsg;
|
||||
const Target *TheTarget = TargetRegistry::lookupTarget(TripleStr, ErrMsg);
|
||||
if (!TheTarget)
|
||||
fatal("target not found: " + ErrMsg);
|
||||
|
||||
TargetOptions Options;
|
||||
Reloc::Model R = Config->Pic ? Reloc::PIC_ : Reloc::Static;
|
||||
std::unique_ptr<TargetMachine> TM(
|
||||
TheTarget->createTargetMachine(TripleStr, "", "", Options, R));
|
||||
|
||||
std::unique_ptr<TargetMachine> TM(getTargetMachine());
|
||||
runLTOPasses(Combined, *TM);
|
||||
|
||||
raw_svector_ostream OS(OwningData);
|
||||
|
@ -146,6 +130,17 @@ std::unique_ptr<elf::ObjectFile<ELFT>> BitcodeCompiler::compile() {
|
|||
return std::unique_ptr<ObjectFile<ELFT>>(OF);
|
||||
}
|
||||
|
||||
TargetMachine *BitcodeCompiler::getTargetMachine() {
|
||||
StringRef TripleStr = Combined.getTargetTriple();
|
||||
std::string Msg;
|
||||
const Target *T = TargetRegistry::lookupTarget(TripleStr, Msg);
|
||||
if (!T)
|
||||
fatal("target not found: " + Msg);
|
||||
TargetOptions Options;
|
||||
Reloc::Model R = Config->Pic ? Reloc::PIC_ : Reloc::Static;
|
||||
return T->createTargetMachine(TripleStr, "", "", Options, R);
|
||||
}
|
||||
|
||||
template std::unique_ptr<elf::ObjectFile<ELF32LE>> BitcodeCompiler::compile();
|
||||
template std::unique_ptr<elf::ObjectFile<ELF32BE>> BitcodeCompiler::compile();
|
||||
template std::unique_ptr<elf::ObjectFile<ELF64LE>> BitcodeCompiler::compile();
|
||||
|
|
|
@ -39,6 +39,8 @@ public:
|
|||
template <class ELFT> std::unique_ptr<ObjectFile<ELFT>> compile();
|
||||
|
||||
private:
|
||||
llvm::TargetMachine *getTargetMachine();
|
||||
|
||||
llvm::LLVMContext Context;
|
||||
llvm::Module Combined{"ld-temp.o", Context};
|
||||
llvm::IRMover Mover{Combined};
|
||||
|
|
Loading…
Reference in New Issue