[LTO] Add the ability to test -thinlto-emit-imports-files through llvm-lto2
authorMehdi Amini <mehdi.amini@apple.com>
Fri, 19 Aug 2016 23:54:40 +0000 (23:54 +0000)
committerMehdi Amini <mehdi.amini@apple.com>
Fri, 19 Aug 2016 23:54:40 +0000 (23:54 +0000)
Summary:
Start bringing llvm-lto2 to a level where we can test the LTO API
a bit deeper.

Reviewers: tejohnson

Subscribers: llvm-commits, mehdi_amini

Differential Revision: https://reviews.llvm.org/D23681

llvm-svn: 279349

llvm/test/ThinLTO/X86/emit_imports.ll
llvm/tools/llvm-lto2/llvm-lto2.cpp

index 3fcdf87..5d11d15 100644 (file)
 ; The imports file for Input/emit_imports.ll is empty as it does not import anything.
 ; RUN: cat %t2.bc.imports | count 0
 
+; RUN: rm -f %t*.thinlto.bc %t*.bc.imports
+; RUN: llvm-lto2 %t1.bc %t2.bc -o %t.o \
+; RUN:     -thinlto-distributed-indexes \
+; RUN:     -r=%t1.bc,g, \
+; RUN:     -r=%t1.bc,f,px \
+; RUN:     -r=%t2.bc,g,px
+
+; RUN: cat %t1.bc.imports | count 1
+; RUN: cat %t1.bc.imports | FileCheck %s --check-prefix=IMPORTS1
+
+; The imports file for Input/emit_imports.ll is empty as it does not import anything.
+; RUN: cat %t2.bc.imports | count 0
+
 declare void @g(...)
 
 define void @f() {
index e29185d..b2a8321 100644 (file)
@@ -33,6 +33,15 @@ static cl::opt<std::string> OutputFilename("o", cl::Required,
 
 static cl::opt<bool> SaveTemps("save-temps", cl::desc("Save temporary files"));
 
+static cl::opt<bool>
+    ThinLTODistributedIndexes("thinlto-distributed-indexes", cl::init(false),
+                              cl::desc("Write out individual index and "
+                                       "import files for the "
+                                       "distributed backend case"));
+
+static cl::opt<int> Threads("-thinlto-threads",
+                            cl::init(thread::hardware_concurrency()));
+
 static cl::list<std::string> SymbolResolutions(
     "r",
     cl::desc("Specify a symbol resolution: filename,symbolname,resolution\n"
@@ -135,7 +144,12 @@ int main(int argc, char **argv) {
     check(Conf.addSaveTemps(OutputFilename + "."),
           "Config::addSaveTemps failed");
 
-  LTO Lto(std::move(Conf));
+  ThinBackend Backend;
+  if (ThinLTODistributedIndexes)
+    Backend = createWriteIndexesThinBackend("", "", true, "");
+  else
+    Backend = createInProcessThinBackend(Threads);
+  LTO Lto(std::move(Conf), std::move(Backend));
 
   bool HasErrors = false;
   for (std::string F : InputFilenames) {