[PATCH] D23525: [ThinLTO] Fix temp file dumping, enable via llvm-lto and test it

Teresa Johnson via llvm-commits llvm-commits at lists.llvm.org
Mon Aug 15 16:32:55 PDT 2016


This revision was automatically updated to reflect the committed changes.
Closed by commit rL278761: [ThinLTO] Fix temp file dumping, enable via llvm-lto and test it (authored by tejohnson).

Changed prior to commit:
  https://reviews.llvm.org/D23525?vs=68083&id=68111#toc

Repository:
  rL LLVM

https://reviews.llvm.org/D23525

Files:
  llvm/trunk/lib/LTO/ThinLTOCodeGenerator.cpp
  llvm/trunk/test/ThinLTO/X86/linkonce_resolution_comdat.ll
  llvm/trunk/tools/llvm-lto/llvm-lto.cpp

Index: llvm/trunk/tools/llvm-lto/llvm-lto.cpp
===================================================================
--- llvm/trunk/tools/llvm-lto/llvm-lto.cpp
+++ llvm/trunk/tools/llvm-lto/llvm-lto.cpp
@@ -120,6 +120,11 @@
 static cl::opt<std::string>
     ThinLTOCacheDir("thinlto-cache-dir", cl::desc("Enable ThinLTO caching."));
 
+static cl::opt<std::string> ThinLTOSaveTempsPrefix(
+    "thinlto-save-temps",
+    cl::desc("Save ThinLTO temp files using filenames created by adding "
+             "suffixes to the given file path prefix."));
+
 static cl::opt<bool>
     SaveModuleFile("save-merged-module", cl::init(false),
                    cl::desc("Write merged LTO module to file before CodeGen"));
@@ -672,6 +677,8 @@
       ThinGenerator.addModule(Filename, InputBuffers.back()->getBuffer());
     }
 
+    if (!ThinLTOSaveTempsPrefix.empty())
+      ThinGenerator.setSaveTempsDir(ThinLTOSaveTempsPrefix);
     ThinGenerator.run();
 
     auto &Binaries = ThinGenerator.getProducedBinaries();
Index: llvm/trunk/test/ThinLTO/X86/linkonce_resolution_comdat.ll
===================================================================
--- llvm/trunk/test/ThinLTO/X86/linkonce_resolution_comdat.ll
+++ llvm/trunk/test/ThinLTO/X86/linkonce_resolution_comdat.ll
@@ -3,7 +3,15 @@
 ; verification error.
 ; RUN: opt -module-summary %s -o %t1.bc
 ; RUN: opt -module-summary %p/Inputs/linkonce_resolution_comdat.ll -o %t2.bc
-; RUN: llvm-lto -thinlto-action=run %t1.bc %t2.bc -exported-symbol=f -exported-symbol=g
+; RUN: llvm-lto -thinlto-action=run %t1.bc %t2.bc -exported-symbol=f -exported-symbol=g -thinlto-save-temps=%t3.
+
+; RUN: llvm-dis %t3.0.3.imported.bc -o - | FileCheck %s --check-prefix=IMPORT1
+; RUN: llvm-dis %t3.1.3.imported.bc -o - | FileCheck %s --check-prefix=IMPORT2
+; Copy from first module is prevailing and converted to weak_odr, copy
+; from second module is preempted and converted to available_externally and
+; removed from comdat.
+; IMPORT1: define weak_odr i32 @f(i8*) unnamed_addr comdat($c1) {
+; IMPORT2: define available_externally i32 @f(i8*) unnamed_addr {
 
 ; RUN: llvm-nm -o - < %t1.bc.thinlto.o | FileCheck %s --check-prefix=NM1
 ; NM1: W f
Index: llvm/trunk/lib/LTO/ThinLTOCodeGenerator.cpp
===================================================================
--- llvm/trunk/lib/LTO/ThinLTOCodeGenerator.cpp
+++ llvm/trunk/lib/LTO/ThinLTOCodeGenerator.cpp
@@ -78,9 +78,9 @@
   if (TempDir.empty())
     return;
   // User asked to save temps, let dump the bitcode file after import.
-  auto SaveTempPath = TempDir + llvm::utostr(count) + Suffix;
+  std::string SaveTempPath = (TempDir + llvm::utostr(count) + Suffix).str();
   std::error_code EC;
-  raw_fd_ostream OS(SaveTempPath.str(), EC, sys::fs::F_None);
+  raw_fd_ostream OS(SaveTempPath, EC, sys::fs::F_None);
   if (EC)
     report_fatal_error(Twine("Failed to open ") + SaveTempPath +
                        " to save optimized bitcode\n");


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D23525.68111.patch
Type: text/x-patch
Size: 2942 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160815/1bc19f24/attachment.bin>


More information about the llvm-commits mailing list