1 // RUN: %clang -target x86_64-apple-darwin -save-stats %s -### 2>&1 | FileCheck %s
2 // RUN: %clang -target x86_64-apple-darwin -save-stats=cwd %s -### 2>&1 | FileCheck %s
3 // CHECK: "-stats-file=save-stats.stats"
4 // CHECK: "{{.*}}save-stats.c"
6 // RUN: %clang -target x86_64-apple-darwin -S %s -### 2>&1 | FileCheck %s -check-prefix=NO-STATS
7 // NO-STATS-NO: -stats-file
8 // NO-STATS: "{{.*}}save-stats.c"
9 // NO-STATS-NO: -stats-file
11 // RUN: %clang -target x86_64-apple-darwin -save-stats=obj -c -o obj/dir/save-stats.o %s -### 2>&1 | FileCheck %s -check-prefix=CHECK-OBJ
12 // CHECK-OBJ: "-stats-file=obj/dir{{/|\\\\}}save-stats.stats"
13 // CHECK-OBJ: "-o" "obj/dir{{/|\\\\}}save-stats.o"
15 // RUN: %clang -target x86_64-apple-darwin -save-stats=obj -c %s -### 2>&1 | FileCheck %s -check-prefix=CHECK-OBJ-NOO
16 // CHECK-OBJ-NOO: "-stats-file=save-stats.stats"
17 // CHECK-OBJ-NOO: "-o" "save-stats.o"
19 // RUN: not %clang -target x86_64-apple-darwin -save-stats=bla -c %s -### 2>&1 | FileCheck %s -check-prefix=CHECK-INVALID
20 // CHECK-INVALID: invalid value 'bla' in '-save-stats=bla'
22 // RUN: %clang --target=x86_64-unknown-linux -save-stats -flto -o obj/dir/save-stats.exe %s -### 2>&1 | FileCheck %s -check-prefix=CHECK-LTO
23 // Previously `-plugin-opt=stats-file` would use empty filename if a linker flag (i.e. -Wl) is presented before any input filename.
24 // RUN: %clang --target=x86_64-unknown-linux -save-stats -flto -o obj/dir/save-stats.exe -Wl,-plugin-opt=-dummy %s -### 2>&1 | FileCheck %s -check-prefix=CHECK-LTO
25 // RUN: %clang --target=x86_64-unknown-freebsd -save-stats -flto -o obj/dir/save-stats.exe %s -### 2>&1 | FileCheck %s -check-prefix=CHECK-LTO
26 // RUN: %clang --target=x86_64-unknown-freebsd -save-stats -flto -o obj/dir/save-stats.exe -Wl,-plugin-opt=-dummy %s -### 2>&1 | FileCheck %s -check-prefix=CHECK-LTO
27 // RUN: %clang --target=x86_64-unknown-openbsd -save-stats -flto -o obj/dir/save-stats.exe %s -### 2>&1 | FileCheck %s -check-prefix=CHECK-LTO
28 // RUN: %clang --target=x86_64-unknown-openbsd -save-stats -flto -o obj/dir/save-stats.exe -Wl,-plugin-opt=-dummy %s -### 2>&1 | FileCheck %s -check-prefix=CHECK-LTO
29 // RUN: %clang --target=x86_64-unknown-fuchsia -save-stats -flto -o obj/dir/save-stats.exe %s -### 2>&1 | FileCheck %s -check-prefix=CHECK-LTO
30 // RUN: %clang --target=x86_64-unknown-fuchsia -save-stats -flto -o obj/dir/save-stats.exe -Wl,-plugin-opt=-dummy %s -### 2>&1 | FileCheck %s -check-prefix=CHECK-LTO
31 // RUN: %clang --target=x86_64-unknown-haiku -save-stats -flto -o obj/dir/save-stats.exe %s -### 2>&1 | FileCheck %s -check-prefix=CHECK-LTO
32 // RUN: %clang --target=x86_64-unknown-haiku -save-stats -flto -o obj/dir/save-stats.exe -Wl,-plugin-opt=-dummy %s -### 2>&1 | FileCheck %s -check-prefix=CHECK-LTO
33 // RUN: %clang --target=avr -save-stats -flto -o obj/dir/save-stats.exe %s -### 2>&1 | FileCheck %s -check-prefix=CHECK-LTO
34 // RUN: %clang --target=avr -save-stats -flto -o obj/dir/save-stats.exe -Wl,-plugin-opt=-dummy %s -### 2>&1 | FileCheck %s -check-prefix=CHECK-LTO
35 // CHECK-LTO: "-stats-file=save-stats.stats"
36 // CHECK-LTO: "-o" "obj/dir{{/|\\\\}}save-stats.exe"
37 // CHECK-LTO: "-plugin-opt=stats-file=save-stats.stats"
39 // RUN: %clang --target=powerpc-unknown-aix -save-stats -flto -o obj/dir/save-stats %s -### 2>&1 | FileCheck %s -check-prefix=CHECK-AIX-LTO
40 // RUN: %clang --target=powerpc-unknown-aix -save-stats -flto -o obj/dir/save-stats -Wl,-bplugin-opt:-dummy %s -### 2>&1 | FileCheck %s -check-prefix=CHECK-AIX-LTO
42 // CHECK-AIX-LTO: "-stats-file=save-stats.stats"
43 // CHECK-AIX-LTO: "-o" "obj/dir{{/|\\\\}}save-stats"
44 // CHECK-AIX-LTO: "-bplugin_opt:stats-file=save-stats.stats"
46 // RUN: %clang --target=x86_64-unknown-linux -save-stats=obj -flto -o obj/dir/save-stats.exe %s -### 2>&1 | FileCheck %s -check-prefix=CHECK-LTO-OBJ
47 // CHECK-LTO-OBJ: "-plugin-opt=stats-file=obj/dir{{/|\\\\}}save-stats.stats"
49 // RUN: env CC_PRINT_INTERNAL_STAT=1 \
50 // RUN: %clang -target x86_64-apple-darwin %s -### 2>&1 | FileCheck %s -check-prefix=CHECK-ENV
51 // CHECK-ENV: "-stats-file=-"
52 // CHECK-ENV-NO: "stats-file-append"
54 // RUN: env CC_PRINT_INTERNAL_STAT=1 \
55 // RUN: CC_PRINT_INTERNAL_STAT_FILE=/tmp/stats.json \
56 // RUN: %clang -target x86_64-apple-darwin %s -### 2>&1 | FileCheck %s -check-prefix=CHECK-ENV-FILE
57 // CHECK-ENV-FILE: "-stats-file=/tmp/stats.json"
58 // CHECK-ENV-FILE: "-stats-file-append"