| // RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -std=c++11 %s | FileCheck %s |
| |
| #define BREAK break |
| |
| enum class MD { |
| Val1, |
| Val2 |
| }; |
| |
| void nop() {} |
| |
| // CHECK: foo |
| // CHECK-NEXT: File 0, [[@LINE+1]]:16 -> {{[0-9]+}}:2 = #0 |
| void foo(MD i) { |
| switch (i) { |
| #define HANDLE_MD(X) \ |
| case MD::X: \ |
| break; |
| #include "Inputs/md.def" |
| default: |
| BREAK; |
| } |
| |
| if (false) |
| nop(); |
| #define HANDLE_MD(X) else if (i == MD::X) { nop(); } |
| #include "Inputs/md.def" |
| } |
| |
| // CHECK: bar |
| // CHECK-NEXT: File 0, [[@LINE+3]]:12 -> [[@LINE+8]]:2 = #0 |
| bool isVal1(); |
| bool isVal2(); |
| bool bar() { |
| #define HANDLE_MD(X) is##X() || |
| return |
| #include "Inputs/md.def" |
| 0; |
| } |
| |
| int main(int argc, const char *argv[]) { |
| foo(MD::Val1); |
| return 0; |
| } |