From be0ad757ca983d9b275023777f6dea711ba9e11e Mon Sep 17 00:00:00 2001 From: Peter Collingbourne Date: Tue, 11 Apr 2017 18:12:00 +0000 Subject: [PATCH] llvm-lto2: Move the LTO::run() action behind a subcommand. Move LTO::run() to a "run" subcommand so that we can introduce new subcommands for testing different parts of the LTO implementation. This doesn't use llvm::cl subcommands because it doesn't appear to be currently possible to pass an argument not associated with a subcommand to a subcommand (e.g. -lto-use-new-pm, -mcpu=yonah). Differential Revision: https://reviews.llvm.org/D31410 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@299967 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/LTO/Resolution/X86/alias.ll | 2 +- test/LTO/Resolution/X86/asm-output.ll | 4 +-- test/LTO/Resolution/X86/comdat.ll | 2 +- test/LTO/Resolution/X86/common2.ll | 16 +++++----- test/LTO/Resolution/X86/commons.ll | 2 +- ...diagnostic-handler-remarks-with-hotness.ll | 2 +- .../X86/diagnostic-handler-remarks.ll | 2 +- test/LTO/Resolution/X86/empty-bitcode.test | 2 +- test/LTO/Resolution/X86/intrinsic.ll | 2 +- .../Resolution/X86/link-odr-availextern.ll | 14 ++++----- test/LTO/Resolution/X86/lowertypetests.ll | 2 +- test/LTO/Resolution/X86/mixed_lto.ll | 4 +-- test/LTO/Resolution/X86/multi-thinlto.ll | 2 +- test/LTO/X86/symver-asm.ll | 2 +- test/LTO/X86/symver-asm2.ll | 2 +- test/ThinLTO/X86/cache-config.ll | 30 +++++++++--------- test/ThinLTO/X86/cache-import-lists.ll | 4 +-- test/ThinLTO/X86/cache-typeid-resolutions.ll | 10 +++--- test/ThinLTO/X86/cache.ll | 4 +-- test/ThinLTO/X86/deadstrip.ll | 4 +-- .../X86/debuginfo-compositetype-import.ll | 4 +-- test/ThinLTO/X86/dicompositetype-unique.ll | 2 +- test/ThinLTO/X86/distributed_import.ll | 4 +-- test/ThinLTO/X86/emit_imports.ll | 2 +- test/ThinLTO/X86/empty_module_with_cache.ll | 4 +-- test/ThinLTO/X86/error-newpm.ll | 2 +- test/ThinLTO/X86/funcimport2.ll | 4 +-- test/ThinLTO/X86/internalize.ll | 2 +- .../X86/linkonce_aliasee_ref_import.ll | 2 +- test/ThinLTO/X86/module_asm2.ll | 2 +- test/ThinLTO/X86/module_asm_glob.ll | 2 +- test/ThinLTO/X86/reference_non_importable.ll | 2 +- test/tools/llvm-lto2/X86/nodatalayout.ll | 2 +- test/tools/llvm-lto2/X86/pipeline.ll | 8 ++--- test/tools/llvm-lto2/errors.ll | 8 ++--- tools/llvm-lto2/llvm-lto2.cpp | 31 ++++++++++++++++--- 36 files changed, 107 insertions(+), 86 deletions(-) diff --git a/test/LTO/Resolution/X86/alias.ll b/test/LTO/Resolution/X86/alias.ll index 2056112e145..886eadcfc82 100644 --- a/test/LTO/Resolution/X86/alias.ll +++ b/test/LTO/Resolution/X86/alias.ll @@ -1,6 +1,6 @@ ; RUN: llvm-as %s -o %t1.o ; RUN: llvm-as %p/Inputs/alias-1.ll -o %t2.o -; RUN: llvm-lto2 -o %t3.o %t2.o %t1.o -r %t2.o,a,px -r %t1.o,a, -r %t1.o,b,px -save-temps +; RUN: llvm-lto2 run -o %t3.o %t2.o %t1.o -r %t2.o,a,px -r %t1.o,a, -r %t1.o,b,px -save-temps ; RUN: llvm-dis < %t3.o.0.0.preopt.bc -o - | FileCheck %s ; RUN: FileCheck --check-prefix=RES %s < %t3.o.resolution.txt diff --git a/test/LTO/Resolution/X86/asm-output.ll b/test/LTO/Resolution/X86/asm-output.ll index 68a7a5c5fc6..41d293501dd 100644 --- a/test/LTO/Resolution/X86/asm-output.ll +++ b/test/LTO/Resolution/X86/asm-output.ll @@ -2,9 +2,9 @@ ; ; RUN: llvm-as < %s > %t1.bc ; -; RUN: llvm-lto2 -filetype=asm -r %t1.bc,main,px -o %t2 %t1.bc +; RUN: llvm-lto2 run -filetype=asm -r %t1.bc,main,px -o %t2 %t1.bc ; RUN: FileCheck --check-prefix=ASM %s < %t2.0 -; RUN: llvm-lto2 -filetype=obj -r %t1.bc,main,px -o %t2 %t1.bc +; RUN: llvm-lto2 run -filetype=obj -r %t1.bc,main,px -o %t2 %t1.bc ; RUN: llvm-objdump -d %t2.0 | FileCheck --check-prefix=ASM %s ; ; ASM: main: diff --git a/test/LTO/Resolution/X86/comdat.ll b/test/LTO/Resolution/X86/comdat.ll index 5124b951bed..60d082b3e0f 100644 --- a/test/LTO/Resolution/X86/comdat.ll +++ b/test/LTO/Resolution/X86/comdat.ll @@ -1,6 +1,6 @@ ; RUN: llvm-as %s -o %t.o ; RUN: llvm-as %p/Inputs/comdat.ll -o %t2.o -; RUN: llvm-lto2 -save-temps -o %t3.o %t.o %t2.o \ +; RUN: llvm-lto2 run -save-temps -o %t3.o %t.o %t2.o \ ; RUN: -r=%t.o,f1,plx \ ; RUN: -r=%t.o,v1,px \ ; RUN: -r=%t.o,r11,px \ diff --git a/test/LTO/Resolution/X86/common2.ll b/test/LTO/Resolution/X86/common2.ll index 3328d7c5ec3..3cb0a992d9a 100644 --- a/test/LTO/Resolution/X86/common2.ll +++ b/test/LTO/Resolution/X86/common2.ll @@ -4,7 +4,7 @@ ; Test that the common merging (size + alignment) is properly handled ; Client marked the "large with little alignment" one as prevailing -; RUN: llvm-lto2 %t1.bc %t2.bc -o %t.o -save-temps \ +; RUN: llvm-lto2 run %t1.bc %t2.bc -o %t.o -save-temps \ ; RUN: -r %t1.bc,v,x \ ; RUN: -r %t2.bc,v,px \ ; RUN: -r %t1.bc,foo,px \ @@ -12,7 +12,7 @@ ; RUN: llvm-dis < %t.o.0.0.preopt.bc | FileCheck %s --check-prefix=LARGE-PREVAILED ; Same as before, but reversing the order of the inputs -; RUN: llvm-lto2 %t2.bc %t1.bc -o %t.o -save-temps \ +; RUN: llvm-lto2 run %t2.bc %t1.bc -o %t.o -save-temps \ ; RUN: -r %t1.bc,v,x \ ; RUN: -r %t2.bc,v,px \ ; RUN: -r %t1.bc,foo,px \ @@ -20,7 +20,7 @@ ; RUN: llvm-dis < %t.o.0.0.preopt.bc | FileCheck %s --check-prefix=LARGE-PREVAILED ; Client marked the "small with large alignment" one as prevailing -; RUN: llvm-lto2 %t1.bc %t2.bc -o %t.o -save-temps \ +; RUN: llvm-lto2 run %t1.bc %t2.bc -o %t.o -save-temps \ ; RUN: -r %t1.bc,v,px \ ; RUN: -r %t2.bc,v,x \ ; RUN: -r %t1.bc,foo,px \ @@ -28,7 +28,7 @@ ; RUN: llvm-dis < %t.o.0.0.preopt.bc | FileCheck %s --check-prefix=SMALL-PREVAILED ; Same as before, but reversing the order of the inputs -; RUN: llvm-lto2 %t2.bc %t1.bc -o %t.o -save-temps \ +; RUN: llvm-lto2 run %t2.bc %t1.bc -o %t.o -save-temps \ ; RUN: -r %t1.bc,v,px \ ; RUN: -r %t2.bc,v,x \ ; RUN: -r %t1.bc,foo,px \ @@ -37,7 +37,7 @@ ; Client didn't mark any as prevailing, we keep the first one we see as "external" -; RUN: llvm-lto2 %t1.bc %t2.bc -o %t.o -save-temps \ +; RUN: llvm-lto2 run %t1.bc %t2.bc -o %t.o -save-temps \ ; RUN: -r %t1.bc,v,x \ ; RUN: -r %t2.bc,v,x \ ; RUN: -r %t1.bc,foo,px \ @@ -45,7 +45,7 @@ ; RUN: llvm-dis < %t.o.0.0.preopt.bc | FileCheck %s --check-prefix=NONE-PREVAILED1 ; Same as before, but reversing the order of the inputs -; RUN: llvm-lto2 %t2.bc %t1.bc -o %t.o -save-temps \ +; RUN: llvm-lto2 run %t2.bc %t1.bc -o %t.o -save-temps \ ; RUN: -r %t1.bc,v,x \ ; RUN: -r %t2.bc,v,x \ ; RUN: -r %t1.bc,foo,px \ @@ -55,7 +55,7 @@ ; Client marked both as prevailing -; RUN: llvm-lto2 %t1.bc %t2.bc -o %t.o -save-temps \ +; RUN: llvm-lto2 run %t1.bc %t2.bc -o %t.o -save-temps \ ; RUN: -r %t1.bc,v,px \ ; RUN: -r %t2.bc,v,px \ ; RUN: -r %t1.bc,foo,px \ @@ -63,7 +63,7 @@ ; RUN: llvm-dis < %t.o.0.0.preopt.bc | FileCheck %s --check-prefix=BOTH-PREVAILED1 ; Same as before, but reversing the order of the inputs -; RUN: llvm-lto2 %t2.bc %t1.bc -o %t.o -save-temps \ +; RUN: llvm-lto2 run %t2.bc %t1.bc -o %t.o -save-temps \ ; RUN: -r %t1.bc,v,px \ ; RUN: -r %t2.bc,v,px \ ; RUN: -r %t1.bc,foo,px \ diff --git a/test/LTO/Resolution/X86/commons.ll b/test/LTO/Resolution/X86/commons.ll index b3e504835af..28bf1ada4a8 100644 --- a/test/LTO/Resolution/X86/commons.ll +++ b/test/LTO/Resolution/X86/commons.ll @@ -1,6 +1,6 @@ ; RUN: llvm-as -o %t1.bc %s ; RUN: llvm-as -o %t2.bc %p/Inputs/commons.ll -; RUN: llvm-lto2 %t1.bc -r=%t1.bc,x,l %t2.bc -r=%t2.bc,x,pl -o %t.out -save-temps +; RUN: llvm-lto2 run %t1.bc -r=%t1.bc,x,l %t2.bc -r=%t2.bc,x,pl -o %t.out -save-temps ; RUN: llvm-dis -o - %t.out.0.0.preopt.bc | FileCheck %s ; A strong definition should override the common diff --git a/test/LTO/Resolution/X86/diagnostic-handler-remarks-with-hotness.ll b/test/LTO/Resolution/X86/diagnostic-handler-remarks-with-hotness.ll index 4c0d6161094..2469570c26b 100644 --- a/test/LTO/Resolution/X86/diagnostic-handler-remarks-with-hotness.ll +++ b/test/LTO/Resolution/X86/diagnostic-handler-remarks-with-hotness.ll @@ -1,7 +1,7 @@ ; RUN: llvm-as < %s >%t.bc ; RUN: rm -f %t.yaml -; RUN: llvm-lto2 -pass-remarks-output=%t.yaml \ +; RUN: llvm-lto2 run -pass-remarks-output=%t.yaml \ ; RUN: -pass-remarks-with-hotness \ ; RUN: -r %t.bc,tinkywinky,p \ ; RUN: -r %t.bc,patatino,px \ diff --git a/test/LTO/Resolution/X86/diagnostic-handler-remarks.ll b/test/LTO/Resolution/X86/diagnostic-handler-remarks.ll index 0ad4ea63db5..eb1bca3670c 100644 --- a/test/LTO/Resolution/X86/diagnostic-handler-remarks.ll +++ b/test/LTO/Resolution/X86/diagnostic-handler-remarks.ll @@ -1,7 +1,7 @@ ; RUN: llvm-as < %s >%t.bc ; RUN: rm -f %t.yaml -; RUN: llvm-lto2 -pass-remarks-output=%t.yaml \ +; RUN: llvm-lto2 run -pass-remarks-output=%t.yaml \ ; RUN: -r %t.bc,tinkywinky,p \ ; RUN: -r %t.bc,patatino,px \ ; RUN: -r %t.bc,main,px -o %t.o %t.bc diff --git a/test/LTO/Resolution/X86/empty-bitcode.test b/test/LTO/Resolution/X86/empty-bitcode.test index c98c54499ef..c05c5e3824b 100644 --- a/test/LTO/Resolution/X86/empty-bitcode.test +++ b/test/LTO/Resolution/X86/empty-bitcode.test @@ -1,3 +1,3 @@ RUN: llvm-cat -o %t.o -RUN: not llvm-lto2 -o %t2 %t.o 2>&1 | FileCheck %s +RUN: not llvm-lto2 run -o %t2 %t.o 2>&1 | FileCheck %s CHECK: Bitcode file does not contain any modules diff --git a/test/LTO/Resolution/X86/intrinsic.ll b/test/LTO/Resolution/X86/intrinsic.ll index f785f8f4f71..dc287ace0f8 100644 --- a/test/LTO/Resolution/X86/intrinsic.ll +++ b/test/LTO/Resolution/X86/intrinsic.ll @@ -1,6 +1,6 @@ ; RUN: llvm-as %s -o %t1.o ; RUN: llvm-as %p/Inputs/intrinsic.ll -o %t2.o -; RUN: llvm-lto2 -o %t3.o %t1.o %t2.o -r %t1.o,foo +; RUN: llvm-lto2 run -o %t3.o %t1.o %t2.o -r %t1.o,foo target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" diff --git a/test/LTO/Resolution/X86/link-odr-availextern.ll b/test/LTO/Resolution/X86/link-odr-availextern.ll index 5a3cc3884db..cc360338d6d 100644 --- a/test/LTO/Resolution/X86/link-odr-availextern.ll +++ b/test/LTO/Resolution/X86/link-odr-availextern.ll @@ -5,25 +5,25 @@ ; RUN: llvm-as %S/Inputs/link-odr-availextern-ae.ll -o %t2ae ; RUN: llvm-as %S/Inputs/link-odr-availextern-odr.ll -o %t2odr -; RUN: llvm-lto2 -o %t3 %t1 %t2ae -r %t1,f,p -r %t2ae,f, -save-temps +; RUN: llvm-lto2 run -o %t3 %t1 %t2ae -r %t1,f,p -r %t2ae,f, -save-temps ; RUN: llvm-dis < %t3.0.0.preopt.bc -o - | FileCheck --check-prefix=PREVAILING %s -; RUN: llvm-lto2 -o %t3 %t1 %t2odr -r %t1,f,p -r %t2odr,f, -save-temps +; RUN: llvm-lto2 run -o %t3 %t1 %t2odr -r %t1,f,p -r %t2odr,f, -save-temps ; RUN: llvm-dis < %t3.0.0.preopt.bc -o - | FileCheck --check-prefix=PREVAILING %s -; RUN: llvm-lto2 -o %t3 %t2ae %t1 -r %t1,f,p -r %t2ae,f, -save-temps +; RUN: llvm-lto2 run -o %t3 %t2ae %t1 -r %t1,f,p -r %t2ae,f, -save-temps ; RUN: llvm-dis < %t3.0.0.preopt.bc -o - | FileCheck --check-prefix=PREVAILING %s -; RUN: llvm-lto2 -o %t3 %t2odr %t1 -r %t1,f,p -r %t2odr,f, -save-temps +; RUN: llvm-lto2 run -o %t3 %t2odr %t1 -r %t1,f,p -r %t2odr,f, -save-temps ; RUN: llvm-dis < %t3.0.0.preopt.bc -o - | FileCheck --check-prefix=PREVAILING %s -; RUN: llvm-lto2 -o %t3 %t2ae -r %t2ae,f, -save-temps +; RUN: llvm-lto2 run -o %t3 %t2ae -r %t2ae,f, -save-temps ; RUN: llvm-dis < %t3.0.0.preopt.bc -o - | FileCheck --check-prefix=NONPREVAILING %s -; RUN: llvm-lto2 -o %t3 %t2odr -r %t2odr,f, -save-temps +; RUN: llvm-lto2 run -o %t3 %t2odr -r %t2odr,f, -save-temps ; RUN: llvm-dis < %t3.0.0.preopt.bc -o - | FileCheck --check-prefix=NONPREVAILING %s -; RUN: llvm-lto2 -o %t3 %t2odr %t1 -r %t1,f, -r %t2odr,f, -save-temps +; RUN: llvm-lto2 run -o %t3 %t2odr %t1 -r %t1,f, -r %t2odr,f, -save-temps ; RUN: llvm-dis < %t3.0.0.preopt.bc -o - | FileCheck --check-prefix=NONPREVAILING %s target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" diff --git a/test/LTO/Resolution/X86/lowertypetests.ll b/test/LTO/Resolution/X86/lowertypetests.ll index 3753689a699..c84a786e66f 100644 --- a/test/LTO/Resolution/X86/lowertypetests.ll +++ b/test/LTO/Resolution/X86/lowertypetests.ll @@ -1,5 +1,5 @@ ; RUN: opt -thinlto-bc -o %t %s -; RUN: llvm-lto2 -r %t,f,plx -r %t,foo,lx -r %t,foo,plx -o %t1 %t +; RUN: llvm-lto2 run -r %t,f,plx -r %t,foo,lx -r %t,foo,plx -o %t1 %t ; RUN: llvm-nm %t1.0 | FileCheck --check-prefix=MERGED %s ; RUN: llvm-nm %t1.1 | FileCheck %s diff --git a/test/LTO/Resolution/X86/mixed_lto.ll b/test/LTO/Resolution/X86/mixed_lto.ll index 02b15c61154..aa686a8114c 100644 --- a/test/LTO/Resolution/X86/mixed_lto.ll +++ b/test/LTO/Resolution/X86/mixed_lto.ll @@ -2,7 +2,7 @@ ; RUN: opt %s -o %t1.o ; RUN: opt -module-summary %p/Inputs/mixed_lto.ll -o %t2.o -; RUN: llvm-lto2 -o %t3.o %t2.o %t1.o -r %t2.o,main,px -r %t2.o,g, -r %t1.o,g,px +; RUN: llvm-lto2 run -o %t3.o %t2.o %t1.o -r %t2.o,main,px -r %t2.o,g, -r %t1.o,g,px ; Task 0 is the regular LTO file (this file) ; RUN: llvm-nm %t3.o.0 | FileCheck %s --check-prefix=NM0 @@ -15,7 +15,7 @@ ; Do the same test again, but with the regular and thin LTO modules in the same file. ; RUN: llvm-cat -b -o %t4.o %t2.o %t1.o -; RUN: llvm-lto2 -o %t5.o %t4.o -r %t4.o,main,px -r %t4.o,g, -r %t4.o,g,px +; RUN: llvm-lto2 run -o %t5.o %t4.o -r %t4.o,main,px -r %t4.o,g, -r %t4.o,g,px ; RUN: llvm-nm %t5.o.0 | FileCheck %s --check-prefix=NM0 ; RUN: llvm-nm %t5.o.1 | FileCheck %s --check-prefix=NM1 diff --git a/test/LTO/Resolution/X86/multi-thinlto.ll b/test/LTO/Resolution/X86/multi-thinlto.ll index 8af73a328a1..06150e44a16 100644 --- a/test/LTO/Resolution/X86/multi-thinlto.ll +++ b/test/LTO/Resolution/X86/multi-thinlto.ll @@ -1,6 +1,6 @@ ; RUN: opt -module-summary %s -o %t.o ; RUN: llvm-cat -b -o %t2.o %t.o %t.o -; RUN: not llvm-lto2 -o %t3.o %t2.o 2>&1 | FileCheck %s +; RUN: not llvm-lto2 run -o %t3.o %t2.o 2>&1 | FileCheck %s ; CHECK: Expected at most one ThinLTO module per bitcode file target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" diff --git a/test/LTO/X86/symver-asm.ll b/test/LTO/X86/symver-asm.ll index 0b0b3334896..4841892724a 100644 --- a/test/LTO/X86/symver-asm.ll +++ b/test/LTO/X86/symver-asm.ll @@ -1,7 +1,7 @@ ; RUN: llvm-as < %s >%t1 ; RUN: llvm-lto -exported-symbol=io_cancel_0_4 -exported-symbol=io_cancel_weak_0_4 -exported-symbol=foo -o %t2 %t1 ; RUN: llvm-nm %t2 | FileCheck %s -; RUN: llvm-lto2 -r %t1,io_cancel_0_4,plx -r %t1,io_cancel_0_4,plx -r %t1,io_cancel_local_0_4,plx -r %t1,io_cancel_weak_0_4,plx -r %t1,io_cancel_weak_0_4,plx -r %t1,io_cancel@@LIBAIO_0.4,plx -r %t1,io_cancel_weak@@LIBAIO_0.4,plx -r %t1,io_cancel_weak@@LIBAIO_0.4.1,plx -r %t1,foo,plx -r %t1,foo,plx -r %t1,foo@@VER1,plx -o %t3 %t1 -save-temps +; RUN: llvm-lto2 run -r %t1,io_cancel_0_4,plx -r %t1,io_cancel_0_4,plx -r %t1,io_cancel_local_0_4,plx -r %t1,io_cancel_weak_0_4,plx -r %t1,io_cancel_weak_0_4,plx -r %t1,io_cancel@@LIBAIO_0.4,plx -r %t1,io_cancel_weak@@LIBAIO_0.4,plx -r %t1,io_cancel_weak@@LIBAIO_0.4.1,plx -r %t1,foo,plx -r %t1,foo,plx -r %t1,foo@@VER1,plx -o %t3 %t1 -save-temps ; RUN: llvm-nm %t3.0 | FileCheck %s ; RUN: llvm-dis %t3.0.2.internalize.bc -o - | FileCheck %s --check-prefix=INTERN diff --git a/test/LTO/X86/symver-asm2.ll b/test/LTO/X86/symver-asm2.ll index f02f5f7938d..42d6e54bd06 100644 --- a/test/LTO/X86/symver-asm2.ll +++ b/test/LTO/X86/symver-asm2.ll @@ -6,7 +6,7 @@ ; RUN: llvm-as < %s >%t1 ; RUN: llvm-lto -o %t2 %t1 ; RUN: llvm-nm %t2 | FileCheck %s -; RUN: llvm-lto2 -r %t1,_start,plx -r %t1,_start3,plx -r %t1,foo@@SOME_VERSION -r %t1,foo@SOME_VERSION3 -o %t3 %t1 -save-temps +; RUN: llvm-lto2 run -r %t1,_start,plx -r %t1,_start3,plx -r %t1,foo@@SOME_VERSION -r %t1,foo@SOME_VERSION3 -o %t3 %t1 -save-temps ; RUN: llvm-nm %t3.0 | FileCheck %s target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" diff --git a/test/ThinLTO/X86/cache-config.ll b/test/ThinLTO/X86/cache-config.ll index 9a92dc31774..01e44b8b16a 100644 --- a/test/ThinLTO/X86/cache-config.ll +++ b/test/ThinLTO/X86/cache-config.ll @@ -1,21 +1,21 @@ ; RUN: rm -rf %t.cache ; RUN: opt -module-hash -module-summary %s -o %t.bc -; RUN: llvm-lto2 -o %t.o %t.bc -cache-dir %t.cache -r=%t.bc,globalfunc,plx -; RUN: llvm-lto2 -o %t.o %t.bc -cache-dir %t.cache -r=%t.bc,globalfunc,plx -mcpu=yonah -; RUN: llvm-lto2 -o %t.o %t.bc -cache-dir %t.cache -r=%t.bc,globalfunc,plx -relax-elf-relocations -; RUN: llvm-lto2 -o %t.o %t.bc -cache-dir %t.cache -r=%t.bc,globalfunc,plx -function-sections -; RUN: llvm-lto2 -o %t.o %t.bc -cache-dir %t.cache -r=%t.bc,globalfunc,plx -data-sections -; RUN: llvm-lto2 -o %t.o %t.bc -cache-dir %t.cache -r=%t.bc,globalfunc,plx -debugger-tune=sce -; RUN: llvm-lto2 -o %t.o %t.bc -cache-dir %t.cache -r=%t.bc,globalfunc,plx -mattr=+sse2 -; RUN: llvm-lto2 -o %t.o %t.bc -cache-dir %t.cache -r=%t.bc,globalfunc,plx -relocation-model=static -; RUN: llvm-lto2 -o %t.o %t.bc -cache-dir %t.cache -r=%t.bc,globalfunc,plx -code-model=large -; RUN: llvm-lto2 -o %t.o %t.bc -cache-dir %t.cache -r=%t.bc,globalfunc,plx -cg-opt-level=0 -; RUN: llvm-lto2 -o %t.o %t.bc -cache-dir %t.cache -r=%t.bc,globalfunc,plx -O1 -; RUN: llvm-lto2 -o %t.o %t.bc -cache-dir %t.cache -r=%t.bc,globalfunc,plx -opt-pipeline=loweratomic -; RUN: llvm-lto2 -o %t.o %t.bc -cache-dir %t.cache -r=%t.bc,globalfunc,plx -aa-pipeline=basic-aa -; RUN: llvm-lto2 -o %t.o %t.bc -cache-dir %t.cache -r=%t.bc,globalfunc,plx -override-triple=x86_64-unknown-linux-gnu -; RUN: llvm-lto2 -o %t.o %t.bc -cache-dir %t.cache -r=%t.bc,globalfunc,plx -default-triple=x86_64-unknown-linux-gnu +; RUN: llvm-lto2 run -o %t.o %t.bc -cache-dir %t.cache -r=%t.bc,globalfunc,plx +; RUN: llvm-lto2 run -o %t.o %t.bc -cache-dir %t.cache -r=%t.bc,globalfunc,plx -mcpu=yonah +; RUN: llvm-lto2 run -o %t.o %t.bc -cache-dir %t.cache -r=%t.bc,globalfunc,plx -relax-elf-relocations +; RUN: llvm-lto2 run -o %t.o %t.bc -cache-dir %t.cache -r=%t.bc,globalfunc,plx -function-sections +; RUN: llvm-lto2 run -o %t.o %t.bc -cache-dir %t.cache -r=%t.bc,globalfunc,plx -data-sections +; RUN: llvm-lto2 run -o %t.o %t.bc -cache-dir %t.cache -r=%t.bc,globalfunc,plx -debugger-tune=sce +; RUN: llvm-lto2 run -o %t.o %t.bc -cache-dir %t.cache -r=%t.bc,globalfunc,plx -mattr=+sse2 +; RUN: llvm-lto2 run -o %t.o %t.bc -cache-dir %t.cache -r=%t.bc,globalfunc,plx -relocation-model=static +; RUN: llvm-lto2 run -o %t.o %t.bc -cache-dir %t.cache -r=%t.bc,globalfunc,plx -code-model=large +; RUN: llvm-lto2 run -o %t.o %t.bc -cache-dir %t.cache -r=%t.bc,globalfunc,plx -cg-opt-level=0 +; RUN: llvm-lto2 run -o %t.o %t.bc -cache-dir %t.cache -r=%t.bc,globalfunc,plx -O1 +; RUN: llvm-lto2 run -o %t.o %t.bc -cache-dir %t.cache -r=%t.bc,globalfunc,plx -opt-pipeline=loweratomic +; RUN: llvm-lto2 run -o %t.o %t.bc -cache-dir %t.cache -r=%t.bc,globalfunc,plx -aa-pipeline=basic-aa +; RUN: llvm-lto2 run -o %t.o %t.bc -cache-dir %t.cache -r=%t.bc,globalfunc,plx -override-triple=x86_64-unknown-linux-gnu +; RUN: llvm-lto2 run -o %t.o %t.bc -cache-dir %t.cache -r=%t.bc,globalfunc,plx -default-triple=x86_64-unknown-linux-gnu ; RUN: ls %t.cache | count 15 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" diff --git a/test/ThinLTO/X86/cache-import-lists.ll b/test/ThinLTO/X86/cache-import-lists.ll index 6ec5dba1089..ba7b437e8ca 100644 --- a/test/ThinLTO/X86/cache-import-lists.ll +++ b/test/ThinLTO/X86/cache-import-lists.ll @@ -7,8 +7,8 @@ ; linkonce_odr will be imported from either t1 or t2, whichever comes first). ; RUN: rm -rf %t.cache -; RUN: llvm-lto2 -cache-dir %t.cache -o %t.o %t.bc %t1.bc %t2.bc -r=%t.bc,main,plx -r=%t.bc,f1,lx -r=%t.bc,f2,lx -r=%t1.bc,f1,plx -r=%t1.bc,linkonce_odr,plx -r=%t2.bc,f2,plx -r=%t2.bc,linkonce_odr,lx -; RUN: llvm-lto2 -cache-dir %t.cache -o %t.o %t.bc %t2.bc %t1.bc -r=%t.bc,main,plx -r=%t.bc,f1,lx -r=%t.bc,f2,lx -r=%t2.bc,f2,plx -r=%t2.bc,linkonce_odr,plx -r=%t1.bc,f1,plx -r=%t1.bc,linkonce_odr,lx +; RUN: llvm-lto2 run -cache-dir %t.cache -o %t.o %t.bc %t1.bc %t2.bc -r=%t.bc,main,plx -r=%t.bc,f1,lx -r=%t.bc,f2,lx -r=%t1.bc,f1,plx -r=%t1.bc,linkonce_odr,plx -r=%t2.bc,f2,plx -r=%t2.bc,linkonce_odr,lx +; RUN: llvm-lto2 run -cache-dir %t.cache -o %t.o %t.bc %t2.bc %t1.bc -r=%t.bc,main,plx -r=%t.bc,f1,lx -r=%t.bc,f2,lx -r=%t2.bc,f2,plx -r=%t2.bc,linkonce_odr,plx -r=%t1.bc,f1,plx -r=%t1.bc,linkonce_odr,lx ; RUN: ls %t.cache | count 6 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" diff --git a/test/ThinLTO/X86/cache-typeid-resolutions.ll b/test/ThinLTO/X86/cache-typeid-resolutions.ll index e8d41883033..1609e90b0ae 100644 --- a/test/ThinLTO/X86/cache-typeid-resolutions.ll +++ b/test/ThinLTO/X86/cache-typeid-resolutions.ll @@ -9,17 +9,17 @@ ; where both t and t-import are sensitive to typeid1's resolution ; so 4 distinct objects in total. ; RUN: rm -rf %t.cache -; RUN: llvm-lto2 -o %t.o %t.bc %t-import.bc -cache-dir %t.cache -r=%t.bc,f1,plx -r=%t.bc,f2,plx -r=%t-import.bc,importf1,plx -r=%t-import.bc,f1,lx -r=%t-import.bc,importf2,plx -r=%t-import.bc,f2,lx -; RUN: llvm-lto2 -o %t.o %t.bc %t-import.bc %t1.bc -cache-dir %t.cache -r=%t.bc,f1,plx -r=%t.bc,f2,plx -r=%t-import.bc,importf1,plx -r=%t-import.bc,f1,lx -r=%t-import.bc,importf2,plx -r=%t-import.bc,f2,lx -r=%t1.bc,vt1,plx +; RUN: llvm-lto2 run -o %t.o %t.bc %t-import.bc -cache-dir %t.cache -r=%t.bc,f1,plx -r=%t.bc,f2,plx -r=%t-import.bc,importf1,plx -r=%t-import.bc,f1,lx -r=%t-import.bc,importf2,plx -r=%t-import.bc,f2,lx +; RUN: llvm-lto2 run -o %t.o %t.bc %t-import.bc %t1.bc -cache-dir %t.cache -r=%t.bc,f1,plx -r=%t.bc,f2,plx -r=%t-import.bc,importf1,plx -r=%t-import.bc,f1,lx -r=%t-import.bc,importf2,plx -r=%t-import.bc,f2,lx -r=%t1.bc,vt1,plx ; RUN: ls %t.cache | count 4 ; Three resolutions for typeid2: Indir, SingleImpl, UniqueRetVal ; where both t and t-import are sensitive to typeid2's resolution ; so 6 distinct objects in total. ; RUN: rm -rf %t.cache -; RUN: llvm-lto2 -o %t.o %t.bc %t-import.bc -cache-dir %t.cache -r=%t.bc,f1,plx -r=%t.bc,f2,plx -r=%t-import.bc,importf1,plx -r=%t-import.bc,f1,lx -r=%t-import.bc,importf2,plx -r=%t-import.bc,f2,lx -; RUN: llvm-lto2 -o %t.o %t.bc %t-import.bc %t2.bc -cache-dir %t.cache -r=%t.bc,f1,plx -r=%t.bc,f2,plx -r=%t2.bc,vt2,plx -r=%t-import.bc,importf1,plx -r=%t-import.bc,f1,lx -r=%t-import.bc,importf2,plx -r=%t-import.bc,f2,lx -; RUN: llvm-lto2 -o %t.o %t.bc %t-import.bc %t3.bc -cache-dir %t.cache -r=%t.bc,f1,plx -r=%t.bc,f2,plx -r=%t3.bc,vt2a,plx -r=%t3.bc,vt2b,plx -r=%t-import.bc,importf1,plx -r=%t-import.bc,f1,lx -r=%t-import.bc,importf2,plx -r=%t-import.bc,f2,lx +; RUN: llvm-lto2 run -o %t.o %t.bc %t-import.bc -cache-dir %t.cache -r=%t.bc,f1,plx -r=%t.bc,f2,plx -r=%t-import.bc,importf1,plx -r=%t-import.bc,f1,lx -r=%t-import.bc,importf2,plx -r=%t-import.bc,f2,lx +; RUN: llvm-lto2 run -o %t.o %t.bc %t-import.bc %t2.bc -cache-dir %t.cache -r=%t.bc,f1,plx -r=%t.bc,f2,plx -r=%t2.bc,vt2,plx -r=%t-import.bc,importf1,plx -r=%t-import.bc,f1,lx -r=%t-import.bc,importf2,plx -r=%t-import.bc,f2,lx +; RUN: llvm-lto2 run -o %t.o %t.bc %t-import.bc %t3.bc -cache-dir %t.cache -r=%t.bc,f1,plx -r=%t.bc,f2,plx -r=%t3.bc,vt2a,plx -r=%t3.bc,vt2b,plx -r=%t-import.bc,importf1,plx -r=%t-import.bc,f1,lx -r=%t-import.bc,importf2,plx -r=%t-import.bc,f2,lx ; RUN: ls %t.cache | count 6 target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" diff --git a/test/ThinLTO/X86/cache.ll b/test/ThinLTO/X86/cache.ll index 426654f31d2..ea5c2f98d87 100644 --- a/test/ThinLTO/X86/cache.ll +++ b/test/ThinLTO/X86/cache.ll @@ -11,7 +11,7 @@ ; Verify that enabling caching is ignoring module without hash with llvm-lto2 ; RUN: rm -Rf %t.cache -; RUN: llvm-lto2 -o %t.o %t2.bc %t.bc -cache-dir %t.cache \ +; RUN: llvm-lto2 run -o %t.o %t2.bc %t.bc -cache-dir %t.cache \ ; RUN: -r=%t2.bc,_main,plx \ ; RUN: -r=%t2.bc,_globalfunc,lx \ ; RUN: -r=%t.bc,_globalfunc,plx @@ -36,7 +36,7 @@ ; Verify that enabling caching is working with llvm-lto2 ; RUN: rm -Rf %t.cache -; RUN: llvm-lto2 -o %t.o %t2.bc %t.bc -cache-dir %t.cache \ +; RUN: llvm-lto2 run -o %t.o %t2.bc %t.bc -cache-dir %t.cache \ ; RUN: -r=%t2.bc,_main,plx \ ; RUN: -r=%t2.bc,_globalfunc,lx \ ; RUN: -r=%t.bc,_globalfunc,plx diff --git a/test/ThinLTO/X86/deadstrip.ll b/test/ThinLTO/X86/deadstrip.ll index 6f1cbfe5969..0c85322eb56 100644 --- a/test/ThinLTO/X86/deadstrip.ll +++ b/test/ThinLTO/X86/deadstrip.ll @@ -8,7 +8,7 @@ ; RUN: llvm-lto -exported-symbol=_main -thinlto-action=run %t1.bc %t2.bc ; RUN: llvm-nm %t1.bc.thinlto.o | FileCheck %s --check-prefix=CHECK-NM -; RUN: llvm-lto2 %t1.bc %t2.bc -o %t.out -save-temps \ +; RUN: llvm-lto2 run %t1.bc %t2.bc -o %t.out -save-temps \ ; RUN: -r %t1.bc,_main,plx \ ; RUN: -r %t1.bc,_bar,pl \ ; RUN: -r %t1.bc,_dead_func,pl \ @@ -51,7 +51,7 @@ ; In that case there are uses of @dead_func in the regular LTO partition ; and it shouldn't be internalized. ; RUN: opt %p/Inputs/deadstrip.ll -o %t3.bc -; RUN: llvm-lto2 %t1.bc %t3.bc -o %t4.out -save-temps \ +; RUN: llvm-lto2 run %t1.bc %t3.bc -o %t4.out -save-temps \ ; RUN: -r %t1.bc,_main,plx \ ; RUN: -r %t1.bc,_bar,pl \ ; RUN: -r %t1.bc,_dead_func,pl \ diff --git a/test/ThinLTO/X86/debuginfo-compositetype-import.ll b/test/ThinLTO/X86/debuginfo-compositetype-import.ll index 0b3a7a45224..ae2f5f26d22 100644 --- a/test/ThinLTO/X86/debuginfo-compositetype-import.ll +++ b/test/ThinLTO/X86/debuginfo-compositetype-import.ll @@ -7,7 +7,7 @@ ; By default, composite types are imported as type declarations ; RUN: llvm-lto -thinlto-action=import %t2.bc -thinlto-index=%t.index.bc -o - | llvm-dis -o - | FileCheck %s -; RUN: llvm-lto2 %t1.bc %t2.bc -o %t.out -save-temps \ +; RUN: llvm-lto2 run %t1.bc %t2.bc -o %t.out -save-temps \ ; RUN: -r %t2.bc,main,plx \ ; RUN: -r %t2.bc,foo,l \ ; RUN: -r %t1.bc,foo,pl @@ -20,7 +20,7 @@ ; Ensure that full type definitions of composite types are imported if requested ; RUN: llvm-lto -import-full-type-definitions -thinlto-action=import %t2.bc -thinlto-index=%t.index.bc -o - | llvm-dis -o - | FileCheck %s --check-prefix=FULL -; RUN: llvm-lto2 %t1.bc %t2.bc -o %t.out -save-temps \ +; RUN: llvm-lto2 run %t1.bc %t2.bc -o %t.out -save-temps \ ; RUN: -import-full-type-definitions \ ; RUN: -r %t2.bc,main,plx \ ; RUN: -r %t2.bc,foo,l \ diff --git a/test/ThinLTO/X86/dicompositetype-unique.ll b/test/ThinLTO/X86/dicompositetype-unique.ll index 3550e6c6a74..7a35f877e63 100644 --- a/test/ThinLTO/X86/dicompositetype-unique.ll +++ b/test/ThinLTO/X86/dicompositetype-unique.ll @@ -1,7 +1,7 @@ ; RUN: opt -module-summary -o %t1.bc %s ; RUN: opt -module-summary -o %t2.bc %S/Inputs/dicompositetype-unique.ll -; RUN: llvm-lto2 %t1.bc %t2.bc -o %t --save-temps \ +; RUN: llvm-lto2 run %t1.bc %t2.bc -o %t --save-temps \ ; RUN: -r %t1.bc,_foo,lx \ ; RUN: -r %t1.bc,_main,plx \ ; RUN: -r %t2.bc,_foo,plx diff --git a/test/ThinLTO/X86/distributed_import.ll b/test/ThinLTO/X86/distributed_import.ll index 48ff82d26d1..82cc57c4830 100644 --- a/test/ThinLTO/X86/distributed_import.ll +++ b/test/ThinLTO/X86/distributed_import.ll @@ -6,7 +6,7 @@ ; RUN: opt -thinlto-bc %p/Inputs/distributed_import.ll -thin-link-bitcode-file=%t2.thinlink.bc -o %t2.bc ; First perform the thin link on the normal bitcode file. -; RUN: llvm-lto2 %t1.bc %t2.bc -o %t.o -save-temps \ +; RUN: llvm-lto2 run %t1.bc %t2.bc -o %t.o -save-temps \ ; RUN: -thinlto-distributed-indexes \ ; RUN: -r=%t1.bc,g, \ ; RUN: -r=%t1.bc,f,px \ @@ -30,7 +30,7 @@ ; Next perform the thin link on the minimized bitcode files, and compare dumps ; of the resulting indexes to the above dumps to ensure they are identical. ; RUN: rm -f %t1.bc.thinlto.bc %t2.bc.thinlto.bc -; RUN: llvm-lto2 %t1.bc %t2.bc -o %t.o -save-temps \ +; RUN: llvm-lto2 run %t1.bc %t2.bc -o %t.o -save-temps \ ; RUN: -thinlto-distributed-indexes \ ; RUN: -r=%t1.bc,g, \ ; RUN: -r=%t1.bc,f,px \ diff --git a/test/ThinLTO/X86/emit_imports.ll b/test/ThinLTO/X86/emit_imports.ll index 64ea02d857e..fc025f416ae 100644 --- a/test/ThinLTO/X86/emit_imports.ll +++ b/test/ThinLTO/X86/emit_imports.ll @@ -22,7 +22,7 @@ ; RUN: rm -f %t1.thinlto.bc %t1.bc.imports ; RUN: rm -f %t2.thinlto.bc %t2.bc.imports ; RUN: rm -f %t3.bc.thinlto.bc %t3.bc.imports -; RUN: llvm-lto2 %t1.bc %t2.bc %t3.bc -o %t.o -save-temps \ +; RUN: llvm-lto2 run %t1.bc %t2.bc %t3.bc -o %t.o -save-temps \ ; RUN: -thinlto-distributed-indexes \ ; RUN: -r=%t1.bc,g, \ ; RUN: -r=%t1.bc,f,px \ diff --git a/test/ThinLTO/X86/empty_module_with_cache.ll b/test/ThinLTO/X86/empty_module_with_cache.ll index 42692fd4c6e..76fe3e91d20 100644 --- a/test/ThinLTO/X86/empty_module_with_cache.ll +++ b/test/ThinLTO/X86/empty_module_with_cache.ll @@ -9,7 +9,7 @@ ; Verify that enabling caching is working with llvm-lto2 ; RUN: rm -Rf %t.cache -; RUN: llvm-lto2 -o %t.o %t2.bc %t.bc -cache-dir %t.cache \ +; RUN: llvm-lto2 run -o %t.o %t2.bc %t.bc -cache-dir %t.cache \ ; RUN: -r=%t2.bc,_main,plx ; RUN: ls %t.cache | count 2 @@ -26,7 +26,7 @@ ; Verify that caching is disabled for module without hash, with llvm-lto2 ; RUN: rm -Rf %t.cache -; RUN: llvm-lto2 -o %t.o %t2.bc %t.bc -cache-dir %t.cache \ +; RUN: llvm-lto2 run -o %t.o %t2.bc %t.bc -cache-dir %t.cache \ ; RUN: -r=%t2.bc,_main,plx ; RUN: ls %t.cache | count 0 diff --git a/test/ThinLTO/X86/error-newpm.ll b/test/ThinLTO/X86/error-newpm.ll index 9b013227602..9c2fd2c70d6 100644 --- a/test/ThinLTO/X86/error-newpm.ll +++ b/test/ThinLTO/X86/error-newpm.ll @@ -1,5 +1,5 @@ ; RUN: opt -module-summary %s -o %t1.bc -; RUN: not llvm-lto2 %t1.bc -o %t.o \ +; RUN: not llvm-lto2 run %t1.bc -o %t.o \ ; RUN: -r=%t1.bc,_tinkywinky,pxl \ ; RUN: -lto-use-new-pm 2>&1 | FileCheck %s diff --git a/test/ThinLTO/X86/funcimport2.ll b/test/ThinLTO/X86/funcimport2.ll index c83370be970..7338f9a9d98 100644 --- a/test/ThinLTO/X86/funcimport2.ll +++ b/test/ThinLTO/X86/funcimport2.ll @@ -2,7 +2,7 @@ ; RUN: opt -module-summary %s -o %t1.bc ; RUN: opt -module-summary %p/Inputs/funcimport2.ll -o %t2.bc -; RUN: llvm-lto2 %t1.bc %t2.bc -o %t.o -save-temps \ +; RUN: llvm-lto2 run %t1.bc %t2.bc -o %t.o -save-temps \ ; RUN: -r=%t1.bc,_foo,plx \ ; RUN: -r=%t2.bc,_main,plx \ ; RUN: -r=%t2.bc,_foo,l @@ -11,7 +11,7 @@ ; We shouldn't do any importing at -O0 ; rm -f %t.o.1.3.import.bc -; RUN: llvm-lto2 %t1.bc %t2.bc -o %t.o -save-temps \ +; RUN: llvm-lto2 run %t1.bc %t2.bc -o %t.o -save-temps \ ; RUN: -O0 \ ; RUN: -r=%t1.bc,_foo,plx \ ; RUN: -r=%t2.bc,_main,plx \ diff --git a/test/ThinLTO/X86/internalize.ll b/test/ThinLTO/X86/internalize.ll index 14ff6791561..867e3e5a00a 100644 --- a/test/ThinLTO/X86/internalize.ll +++ b/test/ThinLTO/X86/internalize.ll @@ -3,7 +3,7 @@ ; RUN: llvm-lto -thinlto-action=internalize -thinlto-index %t.index.bc %t1.bc -o - | llvm-dis -o - | FileCheck %s --check-prefix=REGULAR ; RUN: llvm-lto -thinlto-action=internalize -thinlto-index %t.index.bc %t1.bc -o - --exported-symbol=foo | llvm-dis -o - | FileCheck %s --check-prefix=INTERNALIZE -; RUN: llvm-lto2 %t1.bc -o %t.o -save-temps \ +; RUN: llvm-lto2 run %t1.bc -o %t.o -save-temps \ ; RUN: -r=%t1.bc,_foo,pxl \ ; RUN: -r=%t1.bc,_bar,pl \ ; RUN: -r=%t1.bc,_linkonce_func,pl diff --git a/test/ThinLTO/X86/linkonce_aliasee_ref_import.ll b/test/ThinLTO/X86/linkonce_aliasee_ref_import.ll index 9b8cc7f7228..9086d9824b7 100644 --- a/test/ThinLTO/X86/linkonce_aliasee_ref_import.ll +++ b/test/ThinLTO/X86/linkonce_aliasee_ref_import.ll @@ -7,7 +7,7 @@ ; RUN: llvm-nm -o - < %t2.bc.thinlto.o | FileCheck %s --check-prefix=NM2 ; Import with instr limit to ensure only foo imported. -; RUN: llvm-lto2 %t1.bc %t2.bc -o %t.o -save-temps \ +; RUN: llvm-lto2 run %t1.bc %t2.bc -o %t.o -save-temps \ ; RUN: -r=%t1.bc,foo,pxl \ ; RUN: -r=%t1.bc,baz,pxl \ ; RUN: -r=%t1.bc,baz.clone,pxl \ diff --git a/test/ThinLTO/X86/module_asm2.ll b/test/ThinLTO/X86/module_asm2.ll index 02404062163..b46f4019653 100644 --- a/test/ThinLTO/X86/module_asm2.ll +++ b/test/ThinLTO/X86/module_asm2.ll @@ -8,7 +8,7 @@ ; RUN: llvm-nm %t1.bc.thinlto.o | FileCheck %s --check-prefix=NM0 ; RUN: llvm-nm %t2.bc.thinlto.o | FileCheck %s --check-prefix=NM1 -; RUN: llvm-lto2 %t1.bc %t2.bc -o %t.o -save-temps \ +; RUN: llvm-lto2 run %t1.bc %t2.bc -o %t.o -save-temps \ ; RUN: -r=%t1.bc,foo,plx \ ; RUN: -r=%t1.bc,globalfunc,plx \ ; RUN: -r=%t1.bc,globalfunc,plx \ diff --git a/test/ThinLTO/X86/module_asm_glob.ll b/test/ThinLTO/X86/module_asm_glob.ll index bcc44c58c9f..e27007524ce 100644 --- a/test/ThinLTO/X86/module_asm_glob.ll +++ b/test/ThinLTO/X86/module_asm_glob.ll @@ -5,7 +5,7 @@ ; RUN: llvm-nm %t1.bc.thinlto.o | FileCheck %s --check-prefix=NM0 ; RUN: llvm-nm %t2.bc.thinlto.o | FileCheck %s --check-prefix=NM1 -; RUN: llvm-lto2 %t1.bc %t2.bc -o %t.o -save-temps \ +; RUN: llvm-lto2 run %t1.bc %t2.bc -o %t.o -save-temps \ ; RUN: -r=%t1.bc,foo,lx \ ; RUN: -r=%t1.bc,foo,plx \ ; RUN: -r=%t1.bc,_simplefunction,pl \ diff --git a/test/ThinLTO/X86/reference_non_importable.ll b/test/ThinLTO/X86/reference_non_importable.ll index a001666d28a..5cf225e95de 100644 --- a/test/ThinLTO/X86/reference_non_importable.ll +++ b/test/ThinLTO/X86/reference_non_importable.ll @@ -1,7 +1,7 @@ ; RUN: opt -module-summary %s -o %t1.bc ; RUN: opt -module-summary %p/Inputs/reference_non_importable.ll -o %t2.bc -; RUN: llvm-lto2 %t1.bc %t2.bc -o %t.o -save-temps \ +; RUN: llvm-lto2 run %t1.bc %t2.bc -o %t.o -save-temps \ ; RUN: -r=%t1.bc,_foo,pxl \ ; RUN: -r=%t1.bc,_b,pxl \ ; RUN: -r=%t2.bc,_main,pxl \ diff --git a/test/tools/llvm-lto2/X86/nodatalayout.ll b/test/tools/llvm-lto2/X86/nodatalayout.ll index ee5cfb0e470..f5f44e3e4a9 100644 --- a/test/tools/llvm-lto2/X86/nodatalayout.ll +++ b/test/tools/llvm-lto2/X86/nodatalayout.ll @@ -1,7 +1,7 @@ ; RUN: llvm-as < %s > %t1.bc ; Reject input modules without a datalayout. -; RUN: not llvm-lto2 %t1.bc -o %t.o \ +; RUN: not llvm-lto2 run %t1.bc -o %t.o \ ; RUN: -r %t1.bc,patatino,px 2>&1 | FileCheck %s ; CHECK: input module has no datalayout diff --git a/test/tools/llvm-lto2/X86/pipeline.ll b/test/tools/llvm-lto2/X86/pipeline.ll index e0d03bd932f..dbec9ab2252 100644 --- a/test/tools/llvm-lto2/X86/pipeline.ll +++ b/test/tools/llvm-lto2/X86/pipeline.ll @@ -1,14 +1,14 @@ ; RUN: llvm-as < %s > %t1.bc ; Try a custom pipeline -; RUN: llvm-lto2 %t1.bc -o %t.o -save-temps \ +; RUN: llvm-lto2 run %t1.bc -o %t.o -save-temps \ ; RUN: -r %t1.bc,patatino,px -opt-pipeline loweratomic \ ; RUN: -aa-pipeline basic-aa ; RUN: llvm-dis < %t.o.0.4.opt.bc | FileCheck %s --check-prefix=CUSTOM ; Try the new pass manager LTO default pipeline (make sure the option ; is accepted). -; RUN: llvm-lto2 %t1.bc -o %t.o -lto-use-new-pm -r %t1.bc,patatino,px +; RUN: llvm-lto2 run %t1.bc -o %t.o -lto-use-new-pm -r %t1.bc,patatino,px target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-unknown-linux-gnu" @@ -23,13 +23,13 @@ define void @patatino() { ; CUSTOM-NEXT: } ; Check that invalid pipelines are caught as errors. -; RUN: not llvm-lto2 %t1.bc -o %t.o \ +; RUN: not llvm-lto2 run %t1.bc -o %t.o \ ; RUN: -r %t1.bc,patatino,px -opt-pipeline foogoo 2>&1 | \ ; RUN: FileCheck %s --check-prefix=ERR ; ERR: LLVM ERROR: unable to parse pass pipeline description: foogoo -; RUN: not llvm-lto2 %t1.bc -o %t.o \ +; RUN: not llvm-lto2 run %t1.bc -o %t.o \ ; RUN: -r %t1.bc,patatino,px -aa-pipeline patatino \ ; RUN: -opt-pipeline loweratomic 2>&1 | \ ; RUN: FileCheck %s --check-prefix=AAERR diff --git a/test/tools/llvm-lto2/errors.ll b/test/tools/llvm-lto2/errors.ll index bc1f767d14f..aa12a671759 100644 --- a/test/tools/llvm-lto2/errors.ll +++ b/test/tools/llvm-lto2/errors.ll @@ -1,8 +1,8 @@ ; RUN: llvm-as %s -o %t.bc -; RUN: not llvm-lto2 -o %t2.o %t.bc 2>&1 | FileCheck --check-prefix=ERR1 %s -; RUN: not llvm-lto2 -o %t2.o -r %t.bc,foo,p -r %t.bc,bar,p %t.bc 2>&1 | FileCheck --check-prefix=ERR2 %s -; RUN: not llvm-lto2 -o %t2.o -r %t.bc,foo,q %t.bc 2>&1 | FileCheck --check-prefix=ERR3 %s -; RUN: not llvm-lto2 -o %t2.o -r foo %t.bc 2>&1 | FileCheck --check-prefix=ERR4 %s +; RUN: not llvm-lto2 run -o %t2.o %t.bc 2>&1 | FileCheck --check-prefix=ERR1 %s +; RUN: not llvm-lto2 run -o %t2.o -r %t.bc,foo,p -r %t.bc,bar,p %t.bc 2>&1 | FileCheck --check-prefix=ERR2 %s +; RUN: not llvm-lto2 run -o %t2.o -r %t.bc,foo,q %t.bc 2>&1 | FileCheck --check-prefix=ERR3 %s +; RUN: not llvm-lto2 run -o %t2.o -r foo %t.bc 2>&1 | FileCheck --check-prefix=ERR4 %s ; ERR1: missing symbol resolution for {{.*}}.bc,foo ; ERR2: unused symbol resolution for {{.*}}.bc,bar diff --git a/tools/llvm-lto2/llvm-lto2.cpp b/tools/llvm-lto2/llvm-lto2.cpp index b5b29623ab5..faa658d93a3 100644 --- a/tools/llvm-lto2/llvm-lto2.cpp +++ b/tools/llvm-lto2/llvm-lto2.cpp @@ -126,12 +126,12 @@ template static T check(ErrorOr E, std::string Msg) { return T(); } -int main(int argc, char **argv) { - InitializeAllTargets(); - InitializeAllTargetMCs(); - InitializeAllAsmPrinters(); - InitializeAllAsmParsers(); +static int usage() { + errs() << "Available subcommands: run\n"; + return 1; +} +static int run(int argc, char **argv) { cl::ParseCommandLineOptions(argc, argv, "Resolution-based LTO test harness"); // FIXME: Workaround PR30396 which means that a symbol can appear @@ -284,4 +284,25 @@ int main(int argc, char **argv) { Cache = check(localCache(CacheDir, AddBuffer), "failed to create cache"); check(Lto.run(AddStream, Cache), "LTO::run failed"); + return 0; +} + +int main(int argc, char **argv) { + InitializeAllTargets(); + InitializeAllTargetMCs(); + InitializeAllAsmPrinters(); + InitializeAllAsmParsers(); + + // FIXME: This should use llvm::cl subcommands, but it isn't currently + // possible to pass an argument not associated with a subcommand to a + // subcommand (e.g. -lto-use-new-pm). + if (argc < 2) + return usage(); + + StringRef Subcommand = argv[1]; + // Ensure that argv[0] is correct after adjusting argv/argc. + argv[1] = argv[0]; + if (Subcommand == "run") + return run(argc - 1, argv + 1); + return usage(); } -- 2.40.0