Index: llvm/trunk/test/ThinLTO/X86/emit_imports.ll =================================================================== --- llvm/trunk/test/ThinLTO/X86/emit_imports.ll +++ llvm/trunk/test/ThinLTO/X86/emit_imports.ll @@ -12,6 +12,19 @@ ; 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: llvm/trunk/tools/llvm-lto2/llvm-lto2.cpp =================================================================== --- llvm/trunk/tools/llvm-lto2/llvm-lto2.cpp +++ llvm/trunk/tools/llvm-lto2/llvm-lto2.cpp @@ -33,6 +33,15 @@ static cl::opt SaveTemps("save-temps", cl::desc("Save temporary files")); +static cl::opt + ThinLTODistributedIndexes("thinlto-distributed-indexes", cl::init(false), + cl::desc("Write out individual index and " + "import files for the " + "distributed backend case")); + +static cl::opt Threads("-thinlto-threads", + cl::init(thread::hardware_concurrency())); + static cl::list SymbolResolutions( "r", cl::desc("Specify a symbol resolution: filename,symbolname,resolution\n" @@ -135,7 +144,12 @@ 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) {