Index: include/llvm/ExecutionEngine/ExecutionEngine.h =================================================================== --- include/llvm/ExecutionEngine/ExecutionEngine.h +++ include/llvm/ExecutionEngine/ExecutionEngine.h @@ -565,7 +565,7 @@ } /// setOptLevel - Set the optimization level for the JIT. This option - /// defaults to CodeGenOpt::Default. + /// defaults to CodeGenOpt::Default.- EngineBuilder &setOptLevel(CodeGenOpt::Level l) { OptLevel = l; return *this; Index: test/Bitcode/module_hash.ll =================================================================== --- test/Bitcode/module_hash.ll +++ test/Bitcode/module_hash.ll @@ -1,14 +1,14 @@ ; Check per module hash. -; RUN: llvm-as -module-hash %s -o - | llvm-bcanalyzer -dump | FileCheck %s --check-prefix=MOD1 +; RUN: opt -module-hash %s -o - | llvm-bcanalyzer -dump | FileCheck %s --check-prefix=MOD1 ; MOD1: -; RUN: llvm-as -module-hash %p/Inputs/module_hash.ll -o - | llvm-bcanalyzer -dump | FileCheck %s --check-prefix=MOD2 +; RUN: opt -module-hash %p/Inputs/module_hash.ll -o - | llvm-bcanalyzer -dump | FileCheck %s --check-prefix=MOD2 ; MOD2: ; Check that the hash matches in the combined index. ; First regenerate the modules with a summary -; RUN: llvm-as -module-hash -module-summary %s -o %t.m1.bc -; RUN: llvm-as -module-hash -module-summary %p/Inputs/module_hash.ll -o %t.m2.bc +; RUN: opt -module-hash -module-summary %s -o %t.m1.bc +; RUN: opt -module-hash -module-summary %p/Inputs/module_hash.ll -o %t.m2.bc ; Recover the hashes from the modules themselves. ; RUN: llvm-bcanalyzer -dump %t.m1.bc | grep ' %t.hash Index: test/Bitcode/thinlto-function-summary-callgraph-pgo.ll =================================================================== --- test/Bitcode/thinlto-function-summary-callgraph-pgo.ll +++ test/Bitcode/thinlto-function-summary-callgraph-pgo.ll @@ -1,7 +1,7 @@ ; Test to check the callgraph in summary when there is PGO -; RUN: llvm-as -module-summary %s -o %t.o +; RUN: opt -module-summary %s -o %t.o ; RUN: llvm-bcanalyzer -dump %t.o | FileCheck %s -; RUN: llvm-as -module-summary %p/Inputs/thinlto-function-summary-callgraph.ll -o %t2.o +; RUN: opt -module-summary %p/Inputs/thinlto-function-summary-callgraph.ll -o %t2.o ; RUN: llvm-lto -thinlto -o %t3 %t.o %t2.o ; RUN: llvm-bcanalyzer -dump %t3.thinlto.bc | FileCheck %s --check-prefix=COMBINED Index: test/Bitcode/thinlto-function-summary-callgraph.ll =================================================================== --- test/Bitcode/thinlto-function-summary-callgraph.ll +++ test/Bitcode/thinlto-function-summary-callgraph.ll @@ -1,7 +1,7 @@ ; Test to check the callgraph in summary -; RUN: llvm-as -module-summary %s -o %t.o +; RUN: opt -module-summary %s -o %t.o ; RUN: llvm-bcanalyzer -dump %t.o | FileCheck %s -; RUN: llvm-as -module-summary %p/Inputs/thinlto-function-summary-callgraph.ll -o %t2.o +; RUN: opt -module-summary %p/Inputs/thinlto-function-summary-callgraph.ll -o %t2.o ; RUN: llvm-lto -thinlto -o %t3 %t.o %t2.o ; RUN: llvm-bcanalyzer -dump %t3.thinlto.bc | FileCheck %s --check-prefix=COMBINED Index: test/Bitcode/thinlto-function-summary-refgraph.ll =================================================================== --- test/Bitcode/thinlto-function-summary-refgraph.ll +++ test/Bitcode/thinlto-function-summary-refgraph.ll @@ -1,5 +1,5 @@ ; Test to check both the callgraph and refgraph in summary -; RUN: llvm-as -module-summary %s -o %t.o +; RUN: opt -module-summary %s -o %t.o ; RUN: llvm-bcanalyzer -dump %t.o | FileCheck %s ; See if the calls and other references are recorded properly using the Index: test/Bitcode/thinlto-function-summary.ll =================================================================== --- test/Bitcode/thinlto-function-summary.ll +++ test/Bitcode/thinlto-function-summary.ll @@ -1,4 +1,4 @@ -; RUN: llvm-as -module-summary < %s | llvm-bcanalyzer -dump | FileCheck %s -check-prefix=BC +; RUN: opt -module-summary < %s | llvm-bcanalyzer -dump | FileCheck %s -check-prefix=BC ; Check for summary block/records. ; Check the value ids in the summary entries against the @@ -13,7 +13,7 @@ ; BC-NEXT: record string = 'bar' ; BC-NEXT: record string = 'f' -; RUN: llvm-as -module-summary < %s | llvm-dis | FileCheck %s +; RUN: opt -module-summary < %s | llvm-dis | FileCheck %s ; Check that this round-trips correctly. ; ModuleID = '' Index: test/Bitcode/thinlto-summary-linkage-types.ll =================================================================== --- test/Bitcode/thinlto-summary-linkage-types.ll +++ test/Bitcode/thinlto-summary-linkage-types.ll @@ -1,5 +1,5 @@ ; Check the linkage types in both the per-module and combined summaries. -; RUN: llvm-as -module-summary %s -o %t.o +; RUN: opt -module-summary %s -o %t.o ; RUN: llvm-bcanalyzer -dump %t.o | FileCheck %s ; RUN: llvm-lto -thinlto -o %t2 %t.o ; RUN: llvm-bcanalyzer -dump %t2.thinlto.bc | FileCheck %s --check-prefix=COMBINED Index: test/Linker/funcimport.ll =================================================================== --- test/Linker/funcimport.ll +++ test/Linker/funcimport.ll @@ -1,13 +1,13 @@ ; First ensure that the ThinLTO handling in llvm-link and llvm-lto handles ; bitcode without summary sections gracefully. -; RUN: llvm-as %s -o %t.bc -; RUN: llvm-as %p/Inputs/funcimport.ll -o %t2.bc +; RUN: opt %s -o %t.bc +; RUN: opt %p/Inputs/funcimport.ll -o %t2.bc ; RUN: llvm-link %t.bc -summary-index=%t.bc -S ; RUN: llvm-lto -thinlto -o %t3 %t.bc %t2.bc ; Do setup work for all below tests: generate bitcode and combined index -; RUN: llvm-as -module-summary %s -o %t.bc -; RUN: llvm-as -module-summary %p/Inputs/funcimport.ll -o %t2.bc +; RUN: opt -module-summary %s -o %t.bc +; RUN: opt -module-summary %p/Inputs/funcimport.ll -o %t2.bc ; RUN: llvm-lto -thinlto -o %t3 %t.bc %t2.bc ; Ensure statics are promoted/renamed correctly from this file (all but Index: test/Linker/funcimport2.ll =================================================================== --- test/Linker/funcimport2.ll +++ test/Linker/funcimport2.ll @@ -1,5 +1,5 @@ -; RUN: llvm-as -module-summary %s -o %t1.bc -; RUN: llvm-as -module-summary %p/Inputs/funcimport2.ll -o %t2.bc +; RUN: opt -module-summary %s -o %t1.bc +; RUN: opt -module-summary %p/Inputs/funcimport2.ll -o %t2.bc ; RUN: llvm-lto -thinlto -o %t3 %t1.bc %t2.bc ; RUN: llvm-link -import=bar:%t2.bc %t1.bc -summary-index=%t3.thinlto.bc -S | FileCheck %s Index: test/Linker/funcimport_appending_global.ll =================================================================== --- test/Linker/funcimport_appending_global.ll +++ test/Linker/funcimport_appending_global.ll @@ -1,5 +1,5 @@ -; RUN: llvm-as -module-summary %s -o %t.bc -; RUN: llvm-as -module-summary %p/Inputs/funcimport_appending_global.ll -o %t2.bc +; RUN: opt -module-summary %s -o %t.bc +; RUN: opt -module-summary %p/Inputs/funcimport_appending_global.ll -o %t2.bc ; RUN: llvm-lto -thinlto -o %t3 %t.bc %t2.bc ; Do the import now Index: test/Linker/funcimport_comdat.ll =================================================================== --- test/Linker/funcimport_comdat.ll +++ test/Linker/funcimport_comdat.ll @@ -1,6 +1,6 @@ ; Do setup work for all below tests: generate bitcode and combined index -; RUN: llvm-as -module-summary %s -o %t.bc -; RUN: llvm-as -module-summary %p/Inputs/funcimport_comdat.ll -o %t2.bc +; RUN: opt -module-summary %s -o %t.bc +; RUN: opt -module-summary %p/Inputs/funcimport_comdat.ll -o %t2.bc ; RUN: llvm-lto -thinlto -o %t3 %t.bc %t2.bc ; Ensure linking of comdat containing external linkage global and function Index: test/Linker/thinlto_funcimport_debug.ll =================================================================== --- test/Linker/thinlto_funcimport_debug.ll +++ test/Linker/thinlto_funcimport_debug.ll @@ -1,6 +1,6 @@ ; Do setup work for all below tests: generate bitcode and combined index -; RUN: llvm-as -module-summary %s -o %t.bc -; RUN: llvm-as -module-summary %p/Inputs/thinlto_funcimport_debug.ll -o %t2.bc +; RUN: opt -module-summary %s -o %t.bc +; RUN: opt -module-summary %p/Inputs/thinlto_funcimport_debug.ll -o %t2.bc ; RUN: llvm-lto -thinlto -o %t3 %t.bc %t2.bc ; If we import func1 and not func2 we should only link DISubprogram for func1 Index: test/ThinLTO/X86/funcimport.ll =================================================================== --- test/ThinLTO/X86/funcimport.ll +++ test/ThinLTO/X86/funcimport.ll @@ -1,6 +1,6 @@ ; Do setup work for all below tests: generate bitcode and combined index -; RUN: llvm-as -module-summary %s -o %t.bc -; RUN: llvm-as -module-summary %p/Inputs/funcimport.ll -o %t2.bc +; RUN: opt -module-summary %s -o %t.bc +; RUN: opt -module-summary %p/Inputs/funcimport.ll -o %t2.bc ; RUN: llvm-lto -thinlto-action=thinlink -o %t3.bc %t.bc %t2.bc ; Ensure statics are promoted/renamed correctly from this file (all but Index: test/ThinLTO/X86/odr_resolution.ll =================================================================== --- test/ThinLTO/X86/odr_resolution.ll +++ test/ThinLTO/X86/odr_resolution.ll @@ -1,6 +1,6 @@ ; Do setup work for all below tests: generate bitcode and combined index -; RUN: llvm-as -module-summary %s -o %t.bc -; RUN: llvm-as -module-summary %p/Inputs/odr_resolution.ll -o %t2.bc +; RUN: opt -module-summary %s -o %t.bc +; RUN: opt -module-summary %p/Inputs/odr_resolution.ll -o %t2.bc ; RUN: llvm-lto -thinlto-action=thinlink -o %t3.bc %t.bc %t2.bc ; Verify that only one ODR is selected across modules, but non ODR are not affected. Index: test/Transforms/FunctionImport/adjustable_threshold.ll =================================================================== --- test/Transforms/FunctionImport/adjustable_threshold.ll +++ test/Transforms/FunctionImport/adjustable_threshold.ll @@ -1,6 +1,6 @@ ; Do setup work for all below tests: generate bitcode and combined index -; RUN: llvm-as -module-summary %s -o %t.bc -; RUN: llvm-as -module-summary %p/Inputs/adjustable_threshold.ll -o %t2.bc +; RUN: opt -module-summary %s -o %t.bc +; RUN: opt -module-summary %p/Inputs/adjustable_threshold.ll -o %t2.bc ; RUN: llvm-lto -thinlto -o %t3 %t.bc %t2.bc ; Test import with default progressive instruction factor Index: test/Transforms/FunctionImport/funcimport.ll =================================================================== --- test/Transforms/FunctionImport/funcimport.ll +++ test/Transforms/FunctionImport/funcimport.ll @@ -1,6 +1,6 @@ ; Do setup work for all below tests: generate bitcode and combined index -; RUN: llvm-as -module-summary %s -o %t.bc -; RUN: llvm-as -module-summary %p/Inputs/funcimport.ll -o %t2.bc +; RUN: opt -module-summary %s -o %t.bc +; RUN: opt -module-summary %p/Inputs/funcimport.ll -o %t2.bc ; RUN: llvm-lto -thinlto -print-summary-global-ids -o %t3 %t.bc %t2.bc 2>&1 | FileCheck %s --check-prefix=GUID ; Do the import now Index: test/Transforms/FunctionImport/funcimport_alias.ll =================================================================== --- test/Transforms/FunctionImport/funcimport_alias.ll +++ test/Transforms/FunctionImport/funcimport_alias.ll @@ -1,6 +1,6 @@ ; Do setup work for all below tests: generate bitcode and combined index -; RUN: llvm-as -module-summary %s -o %t.bc -; RUN: llvm-as -module-summary %p/Inputs/funcimport_alias.ll -o %t2.bc +; RUN: opt -module-summary %s -o %t.bc +; RUN: opt -module-summary %p/Inputs/funcimport_alias.ll -o %t2.bc ; RUN: llvm-lto -thinlto -o %t3 %t.bc %t2.bc ; Do the import now. Ensures that the importer handles an external call Index: test/Transforms/FunctionImport/funcimport_debug.ll =================================================================== --- test/Transforms/FunctionImport/funcimport_debug.ll +++ test/Transforms/FunctionImport/funcimport_debug.ll @@ -1,6 +1,6 @@ ; Do setup work for all below tests: generate bitcode and combined index -; RUN: llvm-as -module-summary %s -o %t.bc -; RUN: llvm-as -module-summary %p/Inputs/funcimport_debug.ll -o %t2.bc +; RUN: opt -module-summary %s -o %t.bc +; RUN: opt -module-summary %p/Inputs/funcimport_debug.ll -o %t2.bc ; RUN: llvm-lto -thinlto -o %t3 %t.bc %t2.bc ; Do the import now and confirm that metadata is linked for imported function. Index: test/tools/llvm-lto/thinlto.ll =================================================================== --- test/tools/llvm-lto/thinlto.ll +++ test/tools/llvm-lto/thinlto.ll @@ -1,6 +1,6 @@ ; Test combined function index generation for ThinLTO via llvm-lto. -; RUN: llvm-as -module-summary %s -o %t.o -; RUN: llvm-as -module-summary %p/Inputs/thinlto.ll -o %t2.o +; RUN: opt -module-summary %s -o %t.o +; RUN: opt -module-summary %p/Inputs/thinlto.ll -o %t2.o ; RUN: llvm-lto -thinlto -o %t3 %t.o %t2.o ; RUN: llvm-bcanalyzer -dump %t3.thinlto.bc | FileCheck %s --check-prefix=COMBINED ; RUN: not test -e %t3 Index: tools/llvm-as/llvm-as.cpp =================================================================== --- tools/llvm-as/llvm-as.cpp +++ tools/llvm-as/llvm-as.cpp @@ -45,10 +45,6 @@ static cl::opt DisableOutput("disable-output", cl::desc("Disable output"), cl::init(false)); -static cl::opt EmitSummaryIndex("module-summary", - cl::desc("Emit module summary index"), - cl::init(false)); - static cl::opt EmitModuleHash("module-hash", cl::desc("Emit module hash"), cl::init(false)); @@ -84,14 +80,9 @@ exit(1); } - if (Force || !CheckBitcodeOutputToConsole(Out->os(), true)) { - std::unique_ptr Index; - if (EmitSummaryIndex) - Index = ModuleSummaryIndexBuilder(M).takeIndex(); - - WriteBitcodeToFile(M, Out->os(), PreserveBitcodeUseListOrder, Index.get(), + if (Force || !CheckBitcodeOutputToConsole(Out->os(), true)) + WriteBitcodeToFile(M, Out->os(), PreserveBitcodeUseListOrder, nullptr, EmitModuleHash); - } // Declare success. Out->keep(); Index: tools/opt/opt.cpp =================================================================== --- tools/opt/opt.cpp +++ tools/opt/opt.cpp @@ -158,6 +158,12 @@ cl::desc("Disable the slp vectorization pass"), cl::init(false)); +static cl::opt EmitSummaryIndex("module-summary", + cl::desc("Emit module summary index"), + cl::init(false)); + +static cl::opt EmitModuleHash("module-hash", cl::desc("Emit module hash"), + cl::init(false)); static cl::opt DisableSimplifyLibCalls("disable-simplify-libcalls", @@ -617,7 +623,8 @@ if (OutputAssembly) Passes.add(createPrintModulePass(*OS, "", PreserveAssemblyUseListOrder)); else - Passes.add(createBitcodeWriterPass(*OS, PreserveBitcodeUseListOrder)); + Passes.add(createBitcodeWriterPass(*OS, PreserveBitcodeUseListOrder, + EmitSummaryIndex, EmitModuleHash)); } // Before executing passes, print the final values of the LLVM options.