blob: 5f2b2d61224fbb0c04fdcfec21cb8ed87d2ee90a [file] [log] [blame]
Rong Xu9837ef52016-02-04 18:39:09 +00001// RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -std=c++11 %s | FileCheck %s
Justin Bognerbf42cfd2015-02-18 21:24:51 +00002
3#define BREAK break
4
5enum class MD {
6 Val1,
7 Val2
8};
9
10void nop() {}
11
12// CHECK: foo
13// CHECK-NEXT: File 0, [[@LINE+1]]:16 -> {{[0-9]+}}:2 = #0
14void foo(MD i) {
15 switch (i) {
16 #define HANDLE_MD(X) \
17 case MD::X: \
18 break;
19 #include "Inputs/md.def"
20 default:
21 BREAK;
22 }
23
24 if (false)
25 nop();
26 #define HANDLE_MD(X) else if (i == MD::X) { nop(); }
27 #include "Inputs/md.def"
28}
29
Eli Friedman181dfe42017-08-08 20:10:14 +000030// CHECK: bar
31// CHECK-NEXT: File 0, [[@LINE+3]]:12 -> [[@LINE+8]]:2 = #0
32bool isVal1();
33bool isVal2();
34bool bar() {
35 #define HANDLE_MD(X) is##X() ||
36 return
37#include "Inputs/md.def"
38 0;
39}
40
Justin Bognerbf42cfd2015-02-18 21:24:51 +000041int main(int argc, const char *argv[]) {
42 foo(MD::Val1);
43 return 0;
44}