diff options
Diffstat (limited to 'test/CoverageMapping')
47 files changed, 231 insertions, 63 deletions
diff --git a/test/CoverageMapping/Inputs/ends_a_scope_only b/test/CoverageMapping/Inputs/ends_a_scope_only new file mode 100644 index 0000000000000..5c34318c2147f --- /dev/null +++ b/test/CoverageMapping/Inputs/ends_a_scope_only @@ -0,0 +1 @@ +} diff --git a/test/CoverageMapping/Inputs/macros.h b/test/CoverageMapping/Inputs/macros.h new file mode 100644 index 0000000000000..0a2dadd1b81a3 --- /dev/null +++ b/test/CoverageMapping/Inputs/macros.h @@ -0,0 +1,13 @@ +// Assorted macros to help test #include behavior across file boundaries. + +#define helper1 0 + +void helper2(const char *, ...); + +#define M1(a, ...) helper2(a, ##__VA_ARGS__); + +// Note: M2 stresses vararg macro functions with macro arguments. The spelling +// locations of the args used to be set to the expansion site, leading to +// crashes (region LineEnd < LineStart). The regression test requires M2's line +// number to be greater than the line number containing the expansion. +#define M2(a, ...) M1(a, helper1, ##__VA_ARGS__); diff --git a/test/CoverageMapping/Inputs/starts_a_scope_only b/test/CoverageMapping/Inputs/starts_a_scope_only new file mode 100644 index 0000000000000..98232c64fce93 --- /dev/null +++ b/test/CoverageMapping/Inputs/starts_a_scope_only @@ -0,0 +1 @@ +{ diff --git a/test/CoverageMapping/block-storage-starts-region.m b/test/CoverageMapping/block-storage-starts-region.m index 7997c8d4d2972..7e25438fc0e09 100644 --- a/test/CoverageMapping/block-storage-starts-region.m +++ b/test/CoverageMapping/block-storage-starts-region.m @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -triple x86_64-apple-darwin -fobjc-runtime=macosx-10.10.0 -fblocks -fobjc-arc %s | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -triple x86_64-apple-darwin -fobjc-runtime=macosx-10.10.0 -fblocks -fobjc-arc %s | FileCheck %s @interface Foo @end diff --git a/test/CoverageMapping/break.c b/test/CoverageMapping/break.c index 99439c8bc69d7..ee41271b53fbd 100644 --- a/test/CoverageMapping/break.c +++ b/test/CoverageMapping/break.c @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name break.c %s | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name break.c %s | FileCheck %s int main() { // CHECK: File 0, [[@LINE]]:12 -> {{[0-9]+}}:2 = #0 int cnt = 0; // CHECK-NEXT: File 0, [[@LINE+1]]:9 -> [[@LINE+1]]:18 = #0 diff --git a/test/CoverageMapping/builtinmacro.c b/test/CoverageMapping/builtinmacro.c index 80b2672a67365..63f5584d40c2c 100644 --- a/test/CoverageMapping/builtinmacro.c +++ b/test/CoverageMapping/builtinmacro.c @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name builtinmacro.c %s | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name builtinmacro.c %s | FileCheck %s // Test the coverage mapping generation for built-in macroes. diff --git a/test/CoverageMapping/casts.c b/test/CoverageMapping/casts.c index 95289f6a184b5..d295f3159875a 100644 --- a/test/CoverageMapping/casts.c +++ b/test/CoverageMapping/casts.c @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name casts.c %s | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name casts.c %s | FileCheck %s int main() { // CHECK: File 0, [[@LINE]]:12 -> [[@LINE+4]]:2 = #0 // CHECK-NEXT: File 0, [[@LINE+1]]:41 -> [[@LINE+1]]:54 = #1 diff --git a/test/CoverageMapping/classtemplate.cpp b/test/CoverageMapping/classtemplate.cpp index 2e0b50772da7c..0ccdcb2431b5d 100644 --- a/test/CoverageMapping/classtemplate.cpp +++ b/test/CoverageMapping/classtemplate.cpp @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -triple %itanium_abi_triple -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name classtemplate.cpp %s > %tmapping +// RUN: %clang_cc1 -triple %itanium_abi_triple -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name classtemplate.cpp %s > %tmapping // RUN: FileCheck -input-file %tmapping %s --check-prefix=CHECK-CONSTRUCTOR // RUN: FileCheck -input-file %tmapping %s --check-prefix=CHECK-GETTER // RUN: FileCheck -input-file %tmapping %s --check-prefix=CHECK-SETTER diff --git a/test/CoverageMapping/comment-in-macro.c b/test/CoverageMapping/comment-in-macro.c index ecc883f68ec67..06e8adbc41ee2 100644 --- a/test/CoverageMapping/comment-in-macro.c +++ b/test/CoverageMapping/comment-in-macro.c @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only %s | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only %s | FileCheck %s #define x1 "" // ... #define x2 return 0 diff --git a/test/CoverageMapping/continue.c b/test/CoverageMapping/continue.c index c86651e221d36..7ea03fb68624d 100644 --- a/test/CoverageMapping/continue.c +++ b/test/CoverageMapping/continue.c @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name continue.c %s | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name continue.c %s | FileCheck %s int main() { // CHECK: File 0, [[@LINE]]:12 -> [[@LINE+21]]:2 = #0 int j = 0; // CHECK-NEXT: File 0, [[@LINE+2]]:18 -> [[@LINE+2]]:24 = (#0 + #1) diff --git a/test/CoverageMapping/control-flow-macro.c b/test/CoverageMapping/control-flow-macro.c index 149cb5572cb08..8508e53f333f8 100644 --- a/test/CoverageMapping/control-flow-macro.c +++ b/test/CoverageMapping/control-flow-macro.c @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only %s | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only %s | FileCheck %s #define ifc if diff --git a/test/CoverageMapping/decl.c b/test/CoverageMapping/decl.c index 96ee30357a843..e4770288d987c 100644 --- a/test/CoverageMapping/decl.c +++ b/test/CoverageMapping/decl.c @@ -1,6 +1,6 @@ // Ensure that declarations without definitions don't have maps emitted for them -// RUN: %clang_cc1 -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only %s > %t +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only %s > %t // FileCheck -input-file %t %s // RUN: FileCheck -check-prefix BAR -input-file %t %s diff --git a/test/CoverageMapping/header.cpp b/test/CoverageMapping/header.cpp index e495d5a6285cb..5e0b3111c1d37 100644 --- a/test/CoverageMapping/header.cpp +++ b/test/CoverageMapping/header.cpp @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name header.cpp %s > %tmapping +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name header.cpp %s > %tmapping // RUN: FileCheck -input-file %tmapping %s --check-prefix=CHECK-FUNC // RUN: FileCheck -input-file %tmapping %s --check-prefix=CHECK-STATIC-FUNC // RUN: FileCheck -input-file %tmapping %s --check-prefix=CHECK-STATIC-FUNC2 diff --git a/test/CoverageMapping/if.c b/test/CoverageMapping/if.c index 73b230871675c..69544f68cfe23 100644 --- a/test/CoverageMapping/if.c +++ b/test/CoverageMapping/if.c @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name if.c %s | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name if.c %s | FileCheck %s int main() { // CHECK: File 0, [[@LINE]]:12 -> {{[0-9]+}}:2 = #0 int i = 0; diff --git a/test/CoverageMapping/implicit-def-in-macro.m b/test/CoverageMapping/implicit-def-in-macro.m index 7e563acc54d13..902fc8bd6a774 100644 --- a/test/CoverageMapping/implicit-def-in-macro.m +++ b/test/CoverageMapping/implicit-def-in-macro.m @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -triple x86_64-apple-darwin -fobjc-runtime=macosx-10.10.0 -fblocks -fobjc-arc %s | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -triple x86_64-apple-darwin -fobjc-runtime=macosx-10.10.0 -fblocks -fobjc-arc %s | FileCheck %s @interface Foo @end diff --git a/test/CoverageMapping/include-macros.c b/test/CoverageMapping/include-macros.c new file mode 100644 index 0000000000000..113721c21a5bd --- /dev/null +++ b/test/CoverageMapping/include-macros.c @@ -0,0 +1,18 @@ +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name include-macros.c %s | FileCheck %s + +#include "Inputs/macros.h" + +void f1() { + M2("a", "b"); +} + +// CHECK-LABEL: f1: +// CHECK-NEXT: File 0, 5:11 -> 7:2 = #0 +// CHECK-NEXT: Expansion,File 0, 6:3 -> 6:5 = #0 (Expanded file = 1) +// CHECK-NEXT: File 1, 13:20 -> 13:50 = #0 +// CHECK-NEXT: Expansion,File 1, 13:20 -> 13:22 = #0 (Expanded file = 2) +// CHECK-NEXT: File 2, 7:20 -> 7:46 = #0 +// CHECK-NEXT: Expansion,File 2, 7:33 -> 7:44 = #0 (Expanded file = 3) +// CHECK-NEXT: File 3, 13:26 -> 13:34 = #0 +// CHECK-NEXT: Expansion,File 3, 13:26 -> 13:33 = #0 (Expanded file = 4) +// CHECK-NEXT: File 4, 3:17 -> 3:18 = #0 diff --git a/test/CoverageMapping/includehell.cpp b/test/CoverageMapping/includehell.cpp index 5a9ff78386d69..9ad3683abe112 100644 --- a/test/CoverageMapping/includehell.cpp +++ b/test/CoverageMapping/includehell.cpp @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name includehell.cpp %s > %tmapping +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name includehell.cpp %s > %tmapping int main() { int x = 0; diff --git a/test/CoverageMapping/ir.c b/test/CoverageMapping/ir.c index f94d34c0b98c8..469b2992ecd7b 100644 --- a/test/CoverageMapping/ir.c +++ b/test/CoverageMapping/ir.c @@ -1,5 +1,5 @@ // Check the data structures emitted by coverage mapping -// RUN: %clang_cc1 -triple x86_64-apple-macosx10.9 -main-file-name ir.c %s -o - -emit-llvm -fprofile-instr-generate -fcoverage-mapping | FileCheck %s +// RUN: %clang_cc1 -triple x86_64-apple-macosx10.9 -main-file-name ir.c %s -o - -emit-llvm -fprofile-instrument=clang -fcoverage-mapping | FileCheck %s void foo(void) { } @@ -9,4 +9,4 @@ int main(void) { return 0; } -// CHECK: @__llvm_coverage_mapping = internal constant { { i32, i32, i32, i32 }, [2 x <{ i8*, i32, i32, i64 }>], [{{[0-9]+}} x i8] } { { i32, i32, i32, i32 } { i32 2, i32 {{[0-9]+}}, i32 {{[0-9]+}}, i32 0 }, [2 x <{ i8*, i32, i32, i64 }>] [<{ i8*, i32, i32, i64 }> <{ i8* getelementptr inbounds ([3 x i8], [3 x i8]* @__profn_foo, i32 0, i32 0), i32 3, i32 9, i64 {{[0-9]+}} }>, <{ i8*, i32, i32, i64 }> <{ i8* getelementptr inbounds ([4 x i8], [4 x i8]* @__profn_main, i32 0, i32 0), i32 4, i32 9, i64 {{[0-9]+}} }>] +// CHECK: @__llvm_coverage_mapping = internal constant { { i32, i32, i32, i32 }, [2 x <{ i64, i32, i64 }>], [{{[0-9]+}} x i8] } { { i32, i32, i32, i32 } { i32 2, i32 {{[0-9]+}}, i32 {{[0-9]+}}, i32 {{[0-9]+}} }, [2 x <{ i64, i32, i64 }>] [<{{.*}}> <{{.*}}>, <{{.*}}> <{{.*}}>] diff --git a/test/CoverageMapping/label.cpp b/test/CoverageMapping/label.cpp index 52618f7c2e9ef..1c5111a675a18 100644 --- a/test/CoverageMapping/label.cpp +++ b/test/CoverageMapping/label.cpp @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name label.cpp %s | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name label.cpp %s | FileCheck %s // CHECK: func void func() { // CHECK-NEXT: File 0, [[@LINE]]:13 -> {{[0-9]+}}:2 = #0 diff --git a/test/CoverageMapping/lambda.cpp b/test/CoverageMapping/lambda.cpp index fb018e6b477c5..4f23c157e3859 100644 --- a/test/CoverageMapping/lambda.cpp +++ b/test/CoverageMapping/lambda.cpp @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -x c++ -std=c++11 -triple %itanium_abi_triple -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only %s -main-file-name lambda.cpp | FileCheck %s +// RUN: %clang_cc1 -x c++ -std=c++11 -triple %itanium_abi_triple -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only %s -main-file-name lambda.cpp | FileCheck %s // CHECK-LABEL: _Z3fooi: void foo(int i) { // CHECK: File 0, [[@LINE]]:17 -> {{[0-9]+}}:2 = #0 diff --git a/test/CoverageMapping/logical.cpp b/test/CoverageMapping/logical.cpp index ece3102fc22e0..198cc60d99b6f 100644 --- a/test/CoverageMapping/logical.cpp +++ b/test/CoverageMapping/logical.cpp @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name logical.cpp %s | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name logical.cpp %s | FileCheck %s int main() { // CHECK: File 0, [[@LINE]]:12 -> [[@LINE+10]]:2 = #0 bool bt = true; diff --git a/test/CoverageMapping/loopmacro.c b/test/CoverageMapping/loopmacro.c index bbd0c45c11f14..cffeca087c536 100644 --- a/test/CoverageMapping/loopmacro.c +++ b/test/CoverageMapping/loopmacro.c @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name loopmacro.c %s | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name loopmacro.c %s | FileCheck %s // CHECK: main // CHECK-NEXT: File 0, {{[0-9]+}}:12 -> {{[0-9]+}}:2 = #0 diff --git a/test/CoverageMapping/loops.cpp b/test/CoverageMapping/loops.cpp index 84a9892526ce4..cb7d777f86b69 100644 --- a/test/CoverageMapping/loops.cpp +++ b/test/CoverageMapping/loops.cpp @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -std=c++11 -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name loops.cpp %s | FileCheck %s +// RUN: %clang_cc1 -std=c++11 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name loops.cpp %s | FileCheck %s // CHECK: rangedFor void rangedFor() { // CHECK-NEXT: File 0, [[@LINE]]:18 -> {{[0-9]+}}:2 = #0 diff --git a/test/CoverageMapping/macro-expansion.c b/test/CoverageMapping/macro-expansion.c index e87f444832948..3fca97584aa89 100644 --- a/test/CoverageMapping/macro-expansion.c +++ b/test/CoverageMapping/macro-expansion.c @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name macro-expansion.c %s | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name macro-expansion.c %s | FileCheck %s // CHECK: func // CHECK: File 1, [[@LINE+5]]:12 -> [[@LINE+5]]:38 = #0 diff --git a/test/CoverageMapping/macro-expressions.cpp b/test/CoverageMapping/macro-expressions.cpp index 1085ab02492fb..3852fc6a23b7d 100644 --- a/test/CoverageMapping/macro-expressions.cpp +++ b/test/CoverageMapping/macro-expressions.cpp @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -std=c++11 -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name macro-expressions.cpp %s | FileCheck %s +// RUN: %clang_cc1 -std=c++11 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name macro-expressions.cpp %s | FileCheck %s #define EXPR(x) (x) #define NEXPR(x) (!x) @@ -12,6 +12,44 @@ #define PRIo64 PRI_64_LENGTH_MODIFIER "o" #define PRIu64 PRI_64_LENGTH_MODIFIER "u" +#define STMT(s) s + +void fn1() { + STMT(if (1)); + STMT(while (1)); + STMT(for (;;)); + STMT(if) (1); + STMT(while) (1); + STMT(for) (;;); + if (1) + STMT(if (1) + STMT(if (1))); + if (1) + STMT(if (1)) 0; + if (1) + STMT(while (1)) 0; + if (1) + STMT(for (;;)) 0; + while (1) + STMT(if (1)) 0; + while (1) + STMT(while (1)) 0; + while (1) + STMT(for (;;)) 0; + for (;;) + STMT(if (1)) 0; + for (;;) + STMT(while (1)) 0; + for (;;) + STMT(for (;;)) 0; +} + +void STMT(fn2()) { +} + +void STMT(fn3)() { +} + // CHECK: foo // CHECK-NEXT: File 0, [[@LINE+1]]:17 -> {{[0-9]+}}:2 = #0 void foo(int i) { diff --git a/test/CoverageMapping/macroception.c b/test/CoverageMapping/macroception.c index bde38ff773217..7848741641873 100644 --- a/test/CoverageMapping/macroception.c +++ b/test/CoverageMapping/macroception.c @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name macroception.c %s | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name macroception.c %s | FileCheck %s #define M2 { #define M1 M2 diff --git a/test/CoverageMapping/macroparams.c b/test/CoverageMapping/macroparams.c index d2c8e55e6a7f7..efffc77a07bfb 100644 --- a/test/CoverageMapping/macroparams.c +++ b/test/CoverageMapping/macroparams.c @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name macroparams.c %s | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name macroparams.c %s | FileCheck %s // CHECK: main // CHECK-NEXT: File 0, {{[0-9]+}}:12 -> {{[0-9]+}}:2 = #0 diff --git a/test/CoverageMapping/macroparams2.c b/test/CoverageMapping/macroparams2.c index fc156de75582d..4e04581b725e8 100644 --- a/test/CoverageMapping/macroparams2.c +++ b/test/CoverageMapping/macroparams2.c @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name macroparams2.c %s | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name macroparams2.c %s | FileCheck %s #define MACRO(REFS, CALLS) (4 * (CALLS) < (REFS)) diff --git a/test/CoverageMapping/macros.c b/test/CoverageMapping/macros.c index 02ecceba63ff5..f6339614397b6 100644 --- a/test/CoverageMapping/macros.c +++ b/test/CoverageMapping/macros.c @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name macros.c %s | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name macros.c %s | FileCheck %s #define MACRO return; bar() #define MACRO_2 bar() diff --git a/test/CoverageMapping/macroscopes.cpp b/test/CoverageMapping/macroscopes.cpp index a3a9297968788..f5fd55c731779 100644 --- a/test/CoverageMapping/macroscopes.cpp +++ b/test/CoverageMapping/macroscopes.cpp @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name macroscopes.cpp %s | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name macroscopes.cpp %s | FileCheck %s #define starts_a_scope for (int i = 0; i < 2; ++i) { @@ -22,6 +22,17 @@ #define starts_a_while while (x < 5) #define simple_stmt ++x +#define macro_with_for \ + x = 3; \ + for (int i = 0; i < x; ++i) { \ + } + +#define macro_with_while \ + x = 4; \ + while (x < 5) { \ + ++x; \ + } + // CHECK: main // CHECK-NEXT: File 0, [[@LINE+1]]:12 -> {{[0-9]+}}:2 = #0 int main() { @@ -64,6 +75,11 @@ int main() { simple_stmt; ends_a_scope + // CHECK-NEXT: Expansion,File 0, [[@LINE+1]]:3 -> [[@LINE+1]]:17 = #0 + macro_with_for + // CHECK-NEXT: Expansion,File 0, [[@LINE+1]]:3 -> [[@LINE+1]]:19 = #0 + macro_with_while + return 0; } @@ -103,3 +119,10 @@ int main() { // CHECK-NEXT: File 11, 22:31 -> 22:36 = (#0 + #9) // CHECK-NEXT: File 12, 23:21 -> 23:24 = #9 // CHECK-NEXT: File 13, 6:3 -> 7:4 = #9 +// CHECK-NEXT: File 14, 26:3 -> 28:4 = #0 +// CHECK-NEXT: File 14, 27:19 -> 27:24 = (#0 + #10) +// CHECK-NEXT: File 14, 27:26 -> 27:29 = #10 +// CHECK-NEXT: File 14, 27:31 -> 28:4 = #10 +// CHECK-NEXT: File 15, 31:3 -> 34:4 = #0 +// CHECK-NEXT: File 15, 32:10 -> 32:15 = (#0 + #11) +// CHECK-NEXT: File 15, 32:17 -> 34:4 = #11 diff --git a/test/CoverageMapping/md.cpp b/test/CoverageMapping/md.cpp index fff0df3526517..20c696c7dfbba 100644 --- a/test/CoverageMapping/md.cpp +++ b/test/CoverageMapping/md.cpp @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -std=c++11 %s | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -std=c++11 %s | FileCheck %s #define BREAK break diff --git a/test/CoverageMapping/moremacros.c b/test/CoverageMapping/moremacros.c index d4a8f87a481af..56662270d073b 100644 --- a/test/CoverageMapping/moremacros.c +++ b/test/CoverageMapping/moremacros.c @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name macro-expansion.c %s | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name macro-expansion.c %s | FileCheck %s #define LBRAC { #define RBRAC } diff --git a/test/CoverageMapping/nestedclass.cpp b/test/CoverageMapping/nestedclass.cpp index be4e0ba0b261d..6cbddebe9fcd5 100644 --- a/test/CoverageMapping/nestedclass.cpp +++ b/test/CoverageMapping/nestedclass.cpp @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name nestedclass.cpp %s > %tmapping +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name nestedclass.cpp %s > %tmapping // RUN: FileCheck -input-file %tmapping %s --check-prefix=CHECK-OUTER // RUN: FileCheck -input-file %tmapping %s --check-prefix=CHECK-INNER // RUN: FileCheck -input-file %tmapping %s --check-prefix=CHECK-INNERMOST diff --git a/test/CoverageMapping/objc.m b/test/CoverageMapping/objc.m index 8456dc3842b21..89da5da3203ed 100644 --- a/test/CoverageMapping/objc.m +++ b/test/CoverageMapping/objc.m @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name objc.m -triple x86_64-apple-darwin -fobjc-runtime=macosx-fragile-10.5 %s | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name objc.m -triple x86_64-apple-darwin -fobjc-runtime=macosx-fragile-10.5 %s | FileCheck %s @interface A - (void)bork:(int)msg; diff --git a/test/CoverageMapping/preprocessor.c b/test/CoverageMapping/preprocessor.c index cdd448cd2090a..bd82b3939ed50 100644 --- a/test/CoverageMapping/preprocessor.c +++ b/test/CoverageMapping/preprocessor.c @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name preprocessor.c %s | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name preprocessor.c %s | FileCheck %s // CHECK: func void func() { // CHECK: File 0, [[@LINE]]:13 -> [[@LINE+5]]:2 = #0 diff --git a/test/CoverageMapping/return.c b/test/CoverageMapping/return.c index ab63c2c28637a..1b190b0eb7333 100644 --- a/test/CoverageMapping/return.c +++ b/test/CoverageMapping/return.c @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name return.c %s | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name return.c %s | FileCheck %s // CHECK: func void func() { // CHECK: File 0, [[@LINE]]:13 -> [[@LINE+3]]:2 = #0 diff --git a/test/CoverageMapping/switch.c b/test/CoverageMapping/switch.c index 3c0b0323f69ed..6aa2b31426f1e 100644 --- a/test/CoverageMapping/switch.c +++ b/test/CoverageMapping/switch.c @@ -1,44 +1,44 @@ -// RUN: %clang_cc1 -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name switch.c %s | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name switch.c %s | FileCheck %s // CHECK: foo void foo(int i) { // CHECK-NEXT: File 0, [[@LINE]]:17 -> [[@LINE+8]]:2 = #0 - switch(i) { + switch(i) { // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+5]]:4 = #1 case 1: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+3]]:10 = #2 return; case 2: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:10 = #3 break; } - int x = 0; // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:2 = #1 + int x = 0; } void nop() {} // CHECK: bar void bar(int i) { // CHECK-NEXT: File 0, [[@LINE]]:17 -> [[@LINE+20]]:2 = #0 - switch (i) + switch (i) // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:6 = #1 ; // CHECK-NEXT: File 0, [[@LINE]]:5 -> [[@LINE]]:6 = 0 - switch (i) { // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+16]]:2 = #1 + switch (i) { // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:4 = #2 } - switch (i) // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+13]]:2 = #2 + switch (i) // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:10 = #3 nop(); // CHECK-NEXT: File 0, [[@LINE]]:5 -> [[@LINE]]:10 = 0 - switch (i) // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+10]]:2 = #3 + switch (i) // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+2]]:10 = #4 case 1: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:10 = #5 nop(); - switch (i) { // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+6]]:2 = #4 + switch (i) { // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+4]]:4 = #6 nop(); // CHECK-NEXT: File 0, [[@LINE]]:5 -> [[@LINE+2]]:10 = 0 case 1: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:10 = #7 nop(); } - nop(); // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:2 = #6 + nop(); } // CHECK-NEXT: main int main() { // CHECK-NEXT: File 0, [[@LINE]]:12 -> [[@LINE+34]]:2 = #0 int i = 0; - switch(i) { + switch(i) { // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+9]]:4 = #1 case 0: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+7]]:10 = #2 i = 1; break; @@ -48,7 +48,7 @@ int main() { // CHECK-NEXT: File 0, [[@LINE]]:12 -> [[@LINE+34]]:2 = #0 default: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:10 = #4 break; } - switch(i) { // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+22]]:2 = #1 + switch(i) { // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+8]]:4 = #5 case 0: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+6]]:10 = #6 i = 1; break; @@ -58,7 +58,7 @@ int main() { // CHECK-NEXT: File 0, [[@LINE]]:12 -> [[@LINE+34]]:2 = #0 break; } - switch(i) { // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+12]]:2 = #5 + switch(i) { // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+7]]:4 = #9 case 1: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+5]]:11 = #10 case 2: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+4]]:11 = (#10 + #11) i = 11; @@ -67,7 +67,7 @@ int main() { // CHECK-NEXT: File 0, [[@LINE]]:12 -> [[@LINE+34]]:2 = #0 i = 99; } - foo(1); // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+2]]:11 = #9 + foo(1); bar(1); return 0; } diff --git a/test/CoverageMapping/switchmacro.c b/test/CoverageMapping/switchmacro.c index 431d5c72ea52e..f83d26fd1688a 100644 --- a/test/CoverageMapping/switchmacro.c +++ b/test/CoverageMapping/switchmacro.c @@ -1,14 +1,14 @@ -// RUN: %clang_cc1 -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name switchmacro.c %s | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name switchmacro.c %s | FileCheck %s #define FOO(x) (void)x // CHECK: foo int foo(int i) { // CHECK-NEXT: File 0, [[@LINE]]:16 -> {{[0-9]+}}:2 = #0 - switch (i) { + switch (i) { // CHECK-NEXT: File 0, [[@LINE]]:3 -> {{[0-9]+}}:4 = #1 default: // CHECK-NEXT: File 0, [[@LINE]]:3 -> {{[0-9]+}}:11 = #2 if (i == 1) // CHECK-NEXT: File 0, [[@LINE]]:9 -> [[@LINE]]:15 = #2 return 0; // CHECK-NEXT: File 0, [[@LINE]]:7 -> [[@LINE]]:15 = #3 - // CHECK-NEXT: Expansion,File 0, [[@LINE+2]]:5 -> [[@LINE+2]]:8 = (#2 - #3) + // CHECK-NEXT: Expansion,File 0, [[@LINE+2]]:5 -> [[@LINE+2]]:8 = (#2 - #3) (Expanded file = 1) // CHECK-NEXT: File 0, [[@LINE+1]]:8 -> {{[0-9]+}}:11 = (#2 - #3) FOO(1); case 0: // CHECK-NEXT: File 0, [[@LINE]]:3 -> [[@LINE+1]]:13 = ((#2 + #4) - #3) @@ -22,6 +22,24 @@ int foo(int i) { // CHECK-NEXT: File 0, [[@LINE]]:16 -> {{[0-9]+}}:2 = #0 } } +// PR26825 - Crash when exiting macro expansion containing a switch +// CHECK: bar +#define START { while (0) { switch (0) { +#define END }}} +void bar() { + START // CHECK: File 0, [[@LINE]]:8 -> [[@LINE+2]]:6 +default: ; + END +} + +// PR27948 - Crash when handling a switch partially covered by a macro +// CHECK: baz +#define START2 switch (0) default: +void baz() { + for (;;) + START2 return; // CHECK: Expansion,File 0, [[@LINE]]:5 -> [[@LINE]]:11 = #1 (Expanded file = 1) +} + int main(int argc, const char *argv[]) { foo(3); return 0; diff --git a/test/CoverageMapping/system_macro.c b/test/CoverageMapping/system_macro.c index b0ce360005a86..bddc822b0d90b 100644 --- a/test/CoverageMapping/system_macro.c +++ b/test/CoverageMapping/system_macro.c @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name system_macro.c -o - %s | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name system_macro.c -o - %s | FileCheck %s #ifdef IS_SYSHEADER @@ -13,9 +13,8 @@ // CHECK-LABEL: doSomething: void doSomething(int x) { // CHECK: File 0, [[@LINE]]:25 -> {{[0-9:]+}} = #0 - Func(x); // CHECK: Expansion,File 0, [[@LINE]]:3 -> [[@LINE]]:7 + Func(x); return; - // CHECK: Expansion,File 0, [[@LINE+1]]:3 -> [[@LINE+1]]:11 SomeType *f; // CHECK: File 0, [[@LINE]]:11 -> {{[0-9:]+}} = 0 } diff --git a/test/CoverageMapping/templates.cpp b/test/CoverageMapping/templates.cpp index fcb92e1e9f570..bdba1d41f0b34 100644 --- a/test/CoverageMapping/templates.cpp +++ b/test/CoverageMapping/templates.cpp @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name templates.cpp %s | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name templates.cpp %s | FileCheck %s template<typename T> void unused(T x) { diff --git a/test/CoverageMapping/test.c b/test/CoverageMapping/test.c index a274ce432bd09..5affbaadfd1d5 100644 --- a/test/CoverageMapping/test.c +++ b/test/CoverageMapping/test.c @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name test.c %s | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name test.c %s | FileCheck %s void bar(); static void static_func(); diff --git a/test/CoverageMapping/trycatch.cpp b/test/CoverageMapping/trycatch.cpp index 2d0f629952dbd..01d8fb9307401 100644 --- a/test/CoverageMapping/trycatch.cpp +++ b/test/CoverageMapping/trycatch.cpp @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++11 -fexceptions -fcxx-exceptions -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name trycatch.cpp %s | FileCheck %s +// RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++11 -fexceptions -fcxx-exceptions -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name trycatch.cpp %s | FileCheck %s class Error { }; @@ -23,7 +23,7 @@ void func(int i) { // CHECK-NEXT: File 0, [[@LINE]]:18 -> {{[ // CHECK-NEXT: main int main() { // CHECK-NEXT: File 0, [[@LINE]]:12 -> [[@LINE+13]]:2 = #0 int j = 1; - try { + try { // CHECK-NEXT: File 0, [[@LINE]]:7 -> [[@LINE+2]]:4 = #0 func(j); } catch(const Error &e) { // CHECK-NEXT: File 0, [[@LINE]]:27 -> [[@LINE+2]]:4 = #2 j = 1; diff --git a/test/CoverageMapping/trymacro.cpp b/test/CoverageMapping/trymacro.cpp index 949186d961599..32f44381b9388 100644 --- a/test/CoverageMapping/trymacro.cpp +++ b/test/CoverageMapping/trymacro.cpp @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++11 -fexceptions -fcxx-exceptions -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name trymacro.cpp %s | FileCheck %s +// RUN: %clang_cc1 -triple %itanium_abi_triple -std=c++11 -fexceptions -fcxx-exceptions -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name trymacro.cpp %s | FileCheck %s // CHECK: Z3fn1v: void fn1() try { return; } // CHECK: [[@LINE]]:12 -> [[@LINE+1]]:14 = #1 @@ -17,8 +17,27 @@ catch(...) {} // CHECK: [[@LINE]]:12 -> [[@LINE]]:14 = #2 void fn3() TRY { return; } // CHECK: [[@LINE]]:15 -> [[@LINE+1]]:14 = #1 CATCH(...) {} // CHECK: [[@LINE]]:12 -> [[@LINE]]:14 = #2 +// CHECK: Z3fn4v: +#define TRY2 try { // CHECK-DAG: File 1, [[@LINE]]:18 -> [[@LINE]]:19 = #1 +void fn4() TRY2 // CHECK-DAG: Expansion,File 0, [[@LINE]]:12 -> [[@LINE]]:16 = #1 (Expanded file = 1) + for (;;) + return; +} +catch (...) {} + +// CHECK: Z3fn5v: +#define TRY3 try { return; } catch (...) // CHECK-DAG: File 2, [[@LINE]]:18 -> [[@LINE]]:29 = #1 +#define TRY4 try { TRY3 { return; } } catch (...) // CHECK-DAG: Expansion,File 1, [[@LINE]]:20 -> [[@LINE]]:24 = #1 (Expanded file = 2) +void fn5() { + for (;;) { + TRY4 { return; } // CHECK-DAG: Expansion,File 0, [[@LINE]]:5 -> [[@LINE]]:9 = #1 (Expanded file = 1) + } // CHECK-DAG: File 0, [[@LINE-1]]:10 -> [[@LINE-1]]:21 = #5 +} + int main() { fn1(); fn2(); fn3(); + fn4(); + fn5(); } diff --git a/test/CoverageMapping/unreachable-macro.c b/test/CoverageMapping/unreachable-macro.c index 4b33a23e7bdc4..b9d4f3616ffa5 100644 --- a/test/CoverageMapping/unreachable-macro.c +++ b/test/CoverageMapping/unreachable-macro.c @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only %s | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only %s | FileCheck %s #define WHILE while (0) {} diff --git a/test/CoverageMapping/unused_function.cpp b/test/CoverageMapping/unused_function.cpp new file mode 100644 index 0000000000000..6a46b1d2af1f9 --- /dev/null +++ b/test/CoverageMapping/unused_function.cpp @@ -0,0 +1,37 @@ +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only %s | FileCheck %s + +#define START_SCOPE { +#define END_SCOPE } + +// CHECK: {{_Z2f0v|\?f0@@YAXXZ}}: +// CHECK-NEXT: File 0, [[@LINE+1]]:18 -> [[@LINE+1]]:20 = 0 +inline void f0() {} + +// CHECK: {{_Z2f1v|\?f1@@YAXXZ}}: +// CHECK-NEXT: File 0, [[@LINE+1]]:18 -> [[@LINE+1]]:31 = 0 +inline void f1() START_SCOPE } + +// CHECK: {{_Z2f2v|\?f2@@YAXXZ}}: +// CHECK-NEXT: File 0, [[@LINE+1]]:18 -> [[@LINE+1]]:29 = 0 +inline void f2() { END_SCOPE + +// CHECK: {{_Z2f3v|\?f3@@YAXXZ}}: +// CHECK-NEXT: File 0, [[@LINE+1]]:18 -> [[@LINE+1]]:39 = 0 +inline void f3() START_SCOPE END_SCOPE + +// CHECK: {{_Z2f4v|\?f4@@YAXXZ}}: +// CHECK-NEXT: File 0, [[@LINE+2]]:10 -> [[@LINE+3]]:2 = 0 +inline void f4() +#include "Inputs/starts_a_scope_only" +} + +// CHECK: {{_Z2f5v|\?f5@@YAXXZ}}: +// CHECK-NEXT: File 0, [[@LINE+1]]:18 -> [[@LINE+2]]:36 = 0 +inline void f5() { +#include "Inputs/ends_a_scope_only" + +// CHECK: {{_Z2f6v|\?f6@@YAXXZ}}: +// CHECK-NEXT: File 0, [[@LINE+2]]:10 -> [[@LINE+3]]:36 = 0 +inline void f6() +#include "Inputs/starts_a_scope_only" +#include "Inputs/ends_a_scope_only" diff --git a/test/CoverageMapping/unused_names.c b/test/CoverageMapping/unused_names.c index 00941b8631586..a03d18b6655d9 100644 --- a/test/CoverageMapping/unused_names.c +++ b/test/CoverageMapping/unused_names.c @@ -1,12 +1,13 @@ -// RUN: %clang_cc1 -fprofile-instr-generate -fcoverage-mapping -emit-llvm -main-file-name unused_names.c -o - %s > %t +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -emit-llvm -main-file-name unused_names.c -o - %s > %t // RUN: FileCheck -input-file %t %s // RUN: FileCheck -check-prefix=SYSHEADER -input-file %t %s // Since foo is never emitted, there should not be a profile name for it. -// CHECK-DAG: @__profn_bar = {{.*}} [3 x i8] c"bar", section "{{.*}}__llvm_prf_names" -// CHECK-DAG: @__profn_baz = {{.*}} [3 x i8] c"baz", section "{{.*}}__llvm_prf_names" -// CHECK-DAG: @__profn_unused_names.c_qux = {{.*}} [18 x i8] c"unused_names.c:qux", section "{{.*}}__llvm_prf_names" +// CHECK-DAG: @__profn_bar = {{.*}} [3 x i8] c"bar" +// CHECK-DAG: @__profn_baz = {{.*}} [3 x i8] c"baz" +// CHECK-DAG: @__profn_unused_names.c_qux = {{.*}} [18 x i8] c"unused_names.c:qux" +// CHECK-DAG: @__llvm_prf_nm = private constant {{.*}}, section "{{.*}}__llvm_prf_names" // SYSHEADER-NOT: @__profn_foo = diff --git a/test/CoverageMapping/while.c b/test/CoverageMapping/while.c index a85957ff8ac5d..7f09e4b0d7271 100644 --- a/test/CoverageMapping/while.c +++ b/test/CoverageMapping/while.c @@ -1,4 +1,4 @@ -// RUN: %clang_cc1 -fprofile-instr-generate -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name loops.cpp %s | FileCheck %s +// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -main-file-name loops.cpp %s | FileCheck %s // CHECK: main int main() { // CHECK-NEXT: File 0, [[@LINE]]:12 -> [[@LINE+8]]:2 = #0 |