|
1 |
| -// RUN: %clang_cc1 -mllvm -emptyline-comment-coverage=false -mllvm -system-headers-coverage -std=c++11 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name system_macro.cpp -o - %s | FileCheck %s |
| 1 | +// RUN: %clang_cc1 -mllvm -emptyline-comment-coverage=false -mllvm -system-headers-coverage=true -std=c++11 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm -main-file-name system_macro.cpp -o %t.w_sys.ll %s | FileCheck %s --check-prefixes=CHECK,W_SYS |
| 2 | +// RUN: %clang_cc1 -mllvm -emptyline-comment-coverage=false -mllvm -system-headers-coverage=false -std=c++11 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm -main-file-name system_macro.cpp -o %t.wosys.ll %s | FileCheck %s --check-prefixes=CHECK,WOSYS |
| 3 | +// RUN: FileCheck %s --check-prefixes=LL_CHECK,LL_W_SYS < %t.w_sys.ll |
| 4 | +// RUN: FileCheck %s --check-prefixes=LL_CHECK,LL_WOSYS < %t.wosys.ll |
| 5 | + |
| 6 | +// LL_CHECK: @__covrec_ |
| 7 | +// LL_W_SYS: [[PROFC:@.*__profc_.*SysTmpl.*]] = |
| 8 | +// LL_WOSYS: [[PROFC:@.*__profc_.*SysTmpl.*]] = |
| 9 | +// LL_W_SYS: @{{.*}}__profd_{{.*}}SysTmpl{{.*}} = |
| 10 | +// LL_WOSYS: @{{.*}}__profd_{{.*}}SysTmpl{{.*}} = |
| 11 | + |
| 12 | +// LL_CHECK: @llvm.used = |
2 | 13 |
|
3 | 14 | #ifdef IS_SYSHEADER
|
4 | 15 |
|
5 | 16 | #pragma clang system_header
|
6 | 17 | #define Func(x) if (x) {}
|
7 | 18 | #define SomeType int
|
8 | 19 |
|
| 20 | +// LL_CHECK: define {{.*}} i1 @{{.*}}SysTmpl |
| 21 | +template <bool f> bool SysTmpl() { return f; } |
| 22 | +// Check SysTmpl() is instrumented or not. |
| 23 | +// LL_W_SYS: load i64, ptr [[PROFC]], |
| 24 | +// LL_WOSYS: load i64, ptr [[PROFC]], |
| 25 | + |
9 | 26 | #else
|
10 | 27 |
|
11 | 28 | #define IS_SYSHEADER
|
12 | 29 | #include __FILE__
|
13 | 30 |
|
14 | 31 | // CHECK-LABEL: doSomething
|
15 | 32 | void doSomething(int x) { // CHECK: File 0, [[@LINE]]:25 -> {{[0-9:]+}} = #0
|
16 |
| - Func(x); // CHECK: Expansion,File 0, [[@LINE]]:3 -> [[@LINE]]:7 |
| 33 | + // WOSYS-NOT: Expansion, |
| 34 | + // W_SYS: Expansion,File 0, [[@LINE+1]]:3 -> [[@LINE+1]]:7 |
| 35 | + Func(x); |
| 36 | + // CHECK: Gap,File 0, [[@LINE+1]]:10 |
17 | 37 | return;
|
18 |
| - // CHECK: Expansion,File 0, [[@LINE+1]]:3 -> [[@LINE+1]]:11 |
| 38 | + // WOSYS-NOT: Expansion, |
| 39 | + // W_SYS: Expansion,File 0, [[@LINE+1]]:3 -> [[@LINE+1]]:11 |
19 | 40 | SomeType *f; // CHECK: File 0, [[@LINE]]:11 -> {{[0-9:]+}} = 0
|
20 | 41 | }
|
21 | 42 |
|
22 | 43 | // CHECK-LABEL: main
|
23 | 44 | int main() { // CHECK: File 0, [[@LINE]]:12 -> [[@LINE+2]]:2 = #0
|
24 |
| - Func([] { return true; }()); |
| 45 | + Func([] { return SysTmpl<true>(); }()); |
25 | 46 | }
|
26 | 47 |
|
| 48 | +// W_SYS: SysTmpl |
| 49 | +// WOSYS-NOT: SysTmpl |
| 50 | + |
27 | 51 | #endif
|
0 commit comments