45 lines · cpp
1// RUN: %clang_cc1 -mllvm -emptyline-comment-coverage=false -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -std=c++11 %s | FileCheck %s2 3#define BREAK break4 5enum class MD {6 Val1,7 Val28};9 10void nop() {}11 12// CHECK: foo13// CHECK-NEXT: File 0, [[@LINE+1]]:16 -> {{[0-9]+}}:2 = #014void 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 30// CHECK: bar31// CHECK-NEXT: File 0, [[@LINE+3]]:12 -> [[@LINE+8]]:2 = #032bool isVal1();33bool isVal2();34bool bar() {35 #define HANDLE_MD(X) is##X() ||36 return37#include "Inputs/md.def"38 0;39}40 41int main(int argc, const char *argv[]) {42 foo(MD::Val1);43 return 0;44}45