[lld] r331655 - Refactor BitcodeCompiler::createLTO. NFC.

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Mon May 7 10:46:29 PDT 2018


Author: ruiu
Date: Mon May  7 10:46:28 2018
New Revision: 331655

URL: http://llvm.org/viewvc/llvm-project?rev=331655&view=rev
Log:
Refactor BitcodeCompiler::createLTO. NFC.

Modified:
    lld/trunk/ELF/LTO.cpp
    lld/trunk/ELF/LTO.h

Modified: lld/trunk/ELF/LTO.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/LTO.cpp?rev=331655&r1=331654&r2=331655&view=diff
==============================================================================
--- lld/trunk/ELF/LTO.cpp (original)
+++ lld/trunk/ELF/LTO.cpp Mon May  7 10:46:28 2018
@@ -100,24 +100,22 @@ static void writeEmptyDistributedBuildOu
   }
 }
 
-// Creates and returns output stream with a list of object files for final
+// Creates an empty file to store a list of object files for final
 // linking of distributed ThinLTO.
-static std::unique_ptr<raw_fd_ostream> createLinkedObjectsFile() {
-  if (Config->ThinLTOIndexOnlyObjectsFile.empty())
+static std::unique_ptr<raw_fd_ostream> openFile(StringRef File) {
+  if (File.empty())
     return nullptr;
+
   std::error_code EC;
-  auto LinkedObjectsFile = llvm::make_unique<raw_fd_ostream>(
-      Config->ThinLTOIndexOnlyObjectsFile, EC, sys::fs::OpenFlags::F_None);
+  auto Ret =
+      llvm::make_unique<raw_fd_ostream>(File, EC, sys::fs::OpenFlags::F_None);
   if (EC)
-    error("cannot create " + Config->ThinLTOIndexOnlyObjectsFile + ": " +
-          EC.message());
-  return LinkedObjectsFile;
+    error("cannot create " + File + ": " + EC.message());
+  return Ret;
 }
 
-// Creates instance of LTO.
-// LinkedObjectsFile is an output stream to write the list of object files for
-// the final ThinLTO linking. Can be nullptr.
-static std::unique_ptr<lto::LTO> createLTO(raw_fd_ostream *LinkedObjectsFile) {
+// Initializes IndexFile, Backend and LTOObj members.
+void BitcodeCompiler::init() {
   lto::Config Conf;
 
   // LLD supports the new relocations.
@@ -157,23 +155,26 @@ static std::unique_ptr<lto::LTO> createL
     Backend = lto::createInProcessThinBackend(Config->ThinLTOJobs);
 
   if (Config->ThinLTOIndexOnly) {
-    std::string OldPrefix, NewPrefix;
+    std::string OldPrefix;
+    std::string NewPrefix;
     std::tie(OldPrefix, NewPrefix) = Config->ThinLTOPrefixReplace.split(';');
+
+    IndexFile = openFile(Config->ThinLTOIndexOnlyObjectsFile);
     Backend = lto::createWriteIndexesThinBackend(OldPrefix, NewPrefix, true,
-                                                 LinkedObjectsFile, nullptr);
+                                                 IndexFile.get(), nullptr);
   }
 
   Conf.SampleProfile = Config->LTOSampleProfile;
   Conf.UseNewPM = Config->LTONewPassManager;
   Conf.DebugPassManager = Config->LTODebugPassManager;
 
-  return llvm::make_unique<lto::LTO>(std::move(Conf), Backend,
-                                     Config->LTOPartitions);
+  LTOObj = llvm::make_unique<lto::LTO>(std::move(Conf), Backend,
+                                       Config->LTOPartitions);
 }
 
 BitcodeCompiler::BitcodeCompiler() {
-  LinkedObjects = createLinkedObjectsFile();
-  LTOObj = createLTO(LinkedObjects.get());
+  init();
+
   for (Symbol *Sym : Symtab->getSymbols()) {
     StringRef Name = Sym->getName();
     for (StringRef Prefix : {"__start_", "__stop_"})

Modified: lld/trunk/ELF/LTO.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/LTO.h?rev=331655&r1=331654&r2=331655&view=diff
==============================================================================
--- lld/trunk/ELF/LTO.h (original)
+++ lld/trunk/ELF/LTO.h Mon May  7 10:46:28 2018
@@ -51,11 +51,13 @@ public:
   void addLazyObjFile(LazyObjFile *File);
 
 private:
+  void init();
+
   std::unique_ptr<llvm::lto::LTO> LTOObj;
   std::vector<SmallString<0>> Buff;
   std::vector<std::unique_ptr<MemoryBuffer>> Files;
   llvm::DenseSet<StringRef> UsedStartStop;
-  std::unique_ptr<llvm::raw_fd_ostream> LinkedObjects;
+  std::unique_ptr<llvm::raw_fd_ostream> IndexFile;
 };
 } // namespace elf
 } // namespace lld




More information about the llvm-commits mailing list