diff options
Diffstat (limited to 'clang/test/Driver')
| -rw-r--r-- | clang/test/Driver/clang_f_opts.c | 2 | ||||
| -rw-r--r-- | clang/test/Driver/lto.c | 58 | ||||
| -rw-r--r-- | clang/test/Driver/thinlto.c | 37 |
3 files changed, 80 insertions, 17 deletions
diff --git a/clang/test/Driver/clang_f_opts.c b/clang/test/Driver/clang_f_opts.c index 98198f51d11..25a1930bdd6 100644 --- a/clang/test/Driver/clang_f_opts.c +++ b/clang/test/Driver/clang_f_opts.c @@ -373,7 +373,7 @@ // CHECK-WARNING-DAG: optimization flag '-ftracer' is not supported // CHECK-WARNING-DAG: optimization flag '-funroll-all-loops' is not supported // CHECK-WARNING-DAG: optimization flag '-funswitch-loops' is not supported -// CHECK-WARNING-DAG: optimization flag '-flto=1' is not supported +// CHECK-WARNING-DAG: unsupported argument '1' to option 'flto=' // CHECK-WARNING-DAG: optimization flag '-falign-labels' is not supported // CHECK-WARNING-DAG: optimization flag '-falign-labels=100' is not supported // CHECK-WARNING-DAG: optimization flag '-falign-loops' is not supported diff --git a/clang/test/Driver/lto.c b/clang/test/Driver/lto.c index 62300bd8fac..33c2d5131c6 100644 --- a/clang/test/Driver/lto.c +++ b/clang/test/Driver/lto.c @@ -1,25 +1,51 @@ // -flto causes a switch to llvm-bc object files. -// RUN: %clang -ccc-print-phases -c %s -flto 2> %t.log -// RUN: grep '2: compiler, {1}, ir' %t.log -// RUN: grep '3: backend, {2}, lto-bc' %t.log +// RUN: %clang -ccc-print-phases -c %s -flto 2> %t +// RUN: FileCheck -check-prefix=CHECK-COMPILE-ACTIONS < %t %s +// +// CHECK-COMPILE-ACTIONS: 2: compiler, {1}, ir +// CHECK-COMPILE-ACTIONS: 3: backend, {2}, lto-bc -// RUN: %clang -ccc-print-phases %s -flto 2> %t.log -// RUN: grep '0: input, ".*lto.c", c' %t.log -// RUN: grep '1: preprocessor, {0}, cpp-output' %t.log -// RUN: grep '2: compiler, {1}, ir' %t.log -// RUN: grep '3: backend, {2}, lto-bc' %t.log -// RUN: grep '4: linker, {3}, image' %t.log +// RUN: %clang -ccc-print-phases %s -flto 2> %t +// RUN: FileCheck -check-prefix=CHECK-COMPILELINK-ACTIONS < %t %s +// +// CHECK-COMPILELINK-ACTIONS: 0: input, "{{.*}}lto.c", c +// CHECK-COMPILELINK-ACTIONS: 1: preprocessor, {0}, cpp-output +// CHECK-COMPILELINK-ACTIONS: 2: compiler, {1}, ir +// CHECK-COMPILELINK-ACTIONS: 3: backend, {2}, lto-bc +// CHECK-COMPILELINK-ACTIONS: 4: linker, {3}, image // llvm-bc and llvm-ll outputs need to match regular suffixes // (unfortunately). -// RUN: %clang %s -flto -save-temps -### 2> %t.log -// RUN: grep '"-o" ".*lto\.i" "-x" "c" ".*lto\.c"' %t.log -// RUN: grep '"-o" ".*lto\.bc" .*".*lto\.i"' %t.log -// RUN: grep '"-o" ".*lto\.o" .*".*lto\.bc"' %t.log -// RUN: grep '".*a\.\(out\|exe\)" .*".*lto\.o"' %t.log +// RUN: %clang %s -flto -save-temps -### 2> %t +// RUN: FileCheck -check-prefix=CHECK-COMPILELINK-SUFFIXES < %t %s +// +// CHECK-COMPILELINK-SUFFIXES: "-o" "{{.*}}lto.i" "-x" "c" "{{.*}}lto.c" +// CHECK-COMPILELINK-SUFFIXES: "-o" "{{.*}}lto.bc" {{.*}}"{{.*}}lto.i" +// CHECK-COMPILELINK-SUFFIXES: "-o" "{{.*}}lto.o" {{.*}}"{{.*}}lto.bc" +// CHECK-COMPILELINK-SUFFIXES: "{{.*}}a.{{(out|exe)}}" {{.*}}"{{.*}}lto.o" -// RUN: %clang %s -flto -S -### 2> %t.log -// RUN: grep '"-o" ".*lto\.s" "-x" "c" ".*lto\.c"' %t.log +// RUN: %clang %s -flto -S -### 2> %t +// RUN: FileCheck -check-prefix=CHECK-COMPILE-SUFFIXES < %t %s +// +// CHECK-COMPILE-SUFFIXES: "-o" "{{.*}}lto.s" "-x" "c" "{{.*}}lto.c" // RUN: not %clang %s -emit-llvm 2>&1 | FileCheck --check-prefix=LLVM-LINK %s // LLVM-LINK: -emit-llvm cannot be used when linking + +// -flto should cause link using gold plugin +// RUN: %clang -### %s -flto 2> %t +// RUN: FileCheck -check-prefix=CHECK-LINK-LTO-ACTION < %t %s +// +// CHECK-LINK-LTO-ACTION: "-plugin" "{{.*}}/LLVMgold.so" + +// -flto=full should cause link using gold plugin +// RUN: %clang -### %s -flto=full 2> %t +// RUN: FileCheck -check-prefix=CHECK-LINK-FULL-ACTION < %t %s +// +// CHECK-LINK-FULL-ACTION: "-plugin" "{{.*}}/LLVMgold.so" + +// Check that subsequent -fno-lto takes precedence +// RUN: %clang -### %s -flto=full -fno-lto 2> %t +// RUN: FileCheck -check-prefix=CHECK-LINK-NOLTO-ACTION < %t %s +// +// CHECK-LINK-NOLTO-ACTION-NOT: "-plugin" "{{.*}}/LLVMgold.so" diff --git a/clang/test/Driver/thinlto.c b/clang/test/Driver/thinlto.c new file mode 100644 index 00000000000..dfd671b9e97 --- /dev/null +++ b/clang/test/Driver/thinlto.c @@ -0,0 +1,37 @@ +// -flto=thin causes a switch to llvm-bc object files. +// RUN: %clang -ccc-print-phases -c %s -flto=thin 2> %t +// RUN: FileCheck -check-prefix=CHECK-COMPILE-ACTIONS < %t %s +// +// CHECK-COMPILE-ACTIONS: 2: compiler, {1}, ir +// CHECK-COMPILE-ACTIONS: 3: backend, {2}, lto-bc + +// RUN: %clang -ccc-print-phases %s -flto=thin 2> %t +// RUN: FileCheck -check-prefix=CHECK-COMPILELINK-ACTIONS < %t %s +// +// CHECK-COMPILELINK-ACTIONS: 0: input, "{{.*}}thinlto.c", c +// CHECK-COMPILELINK-ACTIONS: 1: preprocessor, {0}, cpp-output +// CHECK-COMPILELINK-ACTIONS: 2: compiler, {1}, ir +// CHECK-COMPILELINK-ACTIONS: 3: backend, {2}, lto-bc +// CHECK-COMPILELINK-ACTIONS: 4: linker, {3}, image + +// -flto=thin should cause link using gold plugin with thinlto option, +// also confirm that it takes precedence over earlier -fno-lto and -flto=full. +// RUN: %clang -### %s -flto=full -fno-lto -flto=thin 2> %t +// RUN: FileCheck -check-prefix=CHECK-LINK-THIN-ACTION < %t %s +// +// CHECK-LINK-THIN-ACTION: "-plugin" "{{.*}}/LLVMgold.so" +// CHECK-LINK-THIN-ACTION: "-plugin-opt=thinlto" + +// Check that subsequent -flto=full takes precedence +// RUN: %clang -### %s -flto=thin -flto=full 2> %t +// RUN: FileCheck -check-prefix=CHECK-LINK-FULL-ACTION < %t %s +// +// CHECK-LINK-FULL-ACTION: "-plugin" "{{.*}}/LLVMgold.so" +// CHECK-LINK-FULL-ACTION-NOT: "-plugin-opt=thinlto" + +// Check that subsequent -fno-lto takes precedence +// RUN: %clang -### %s -flto=thin -fno-lto 2> %t +// RUN: FileCheck -check-prefix=CHECK-LINK-NOLTO-ACTION < %t %s +// +// CHECK-LINK-NOLTO-ACTION-NOT: "-plugin" "{{.*}}/LLVMgold.so" +// CHECK-LINK-NOLTO-ACTION-NOT: "-plugin-opt=thinlto" |

