From 15c41b25c79d18bf3eaa5cf419c79884e26aa6e2 Mon Sep 17 00:00:00 2001 From: Davide Italiano Date: Mon, 11 Apr 2016 22:39:51 +0000 Subject: [PATCH] [LTO] Switch Module to std::unique_ptr<>. Differential Revision: http://reviews.llvm.org/D18994 llvm-svn: 266009 --- lld/ELF/LTO.cpp | 10 +++++----- lld/ELF/LTO.h | 7 +++++-- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/lld/ELF/LTO.cpp b/lld/ELF/LTO.cpp index bd3c215..9da0ebe 100644 --- a/lld/ELF/LTO.cpp +++ b/lld/ELF/LTO.cpp @@ -140,23 +140,23 @@ static void internalize(GlobalValue &GV) { // and return the resulting ObjectFile. std::unique_ptr BitcodeCompiler::compile() { for (const auto &Name : InternalizedSyms) { - GlobalValue *GV = Combined.getNamedValue(Name.first()); + GlobalValue *GV = Combined->getNamedValue(Name.first()); assert(GV); internalize(*GV); } if (Config->SaveTemps) - saveBCFile(Combined, ".lto.bc"); + saveBCFile(*Combined, ".lto.bc"); std::unique_ptr TM(getTargetMachine()); - runLTOPasses(Combined, *TM); + runLTOPasses(*Combined, *TM); raw_svector_ostream OS(OwningData); legacy::PassManager CodeGenPasses; if (TM->addPassesToEmitFile(CodeGenPasses, OS, TargetMachine::CGFT_ObjectFile)) fatal("failed to setup codegen"); - CodeGenPasses.run(Combined); + CodeGenPasses.run(*Combined); MB = MemoryBuffer::getMemBuffer(OwningData, "LLD-INTERNAL-combined-lto-object", false); if (Config->SaveTemps) @@ -165,7 +165,7 @@ std::unique_ptr BitcodeCompiler::compile() { } TargetMachine *BitcodeCompiler::getTargetMachine() { - StringRef TripleStr = Combined.getTargetTriple(); + StringRef TripleStr = Combined->getTargetTriple(); std::string Msg; const Target *T = TargetRegistry::lookupTarget(TripleStr, Msg); if (!T) diff --git a/lld/ELF/LTO.h b/lld/ELF/LTO.h index 909e5c9..88ee79d 100644 --- a/lld/ELF/LTO.h +++ b/lld/ELF/LTO.h @@ -39,12 +39,15 @@ public: void add(BitcodeFile &F); std::unique_ptr compile(); + BitcodeCompiler() + : Combined(new llvm::Module("ld-temp.o", Context)), Mover(*Combined) {} + private: llvm::TargetMachine *getTargetMachine(); llvm::LLVMContext Context; - llvm::Module Combined{"ld-temp.o", Context}; - llvm::IRMover Mover{Combined}; + std::unique_ptr Combined; + llvm::IRMover Mover; SmallString<0> OwningData; std::unique_ptr MB; llvm::StringSet<> InternalizedSyms; -- 2.7.4