xref: /aosp_15_r20/external/clang/test/CoverageMapping/md.cpp (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // RUN: %clang_cc1 -fprofile-instrument=clang -fcoverage-mapping -dump-coverage-mapping -emit-llvm-only -std=c++11 %s | FileCheck %s
2*67e74705SXin Li 
3*67e74705SXin Li #define BREAK break
4*67e74705SXin Li 
5*67e74705SXin Li enum class MD {
6*67e74705SXin Li   Val1,
7*67e74705SXin Li   Val2
8*67e74705SXin Li };
9*67e74705SXin Li 
nop()10*67e74705SXin Li void nop() {}
11*67e74705SXin Li 
12*67e74705SXin Li // CHECK: foo
13*67e74705SXin Li // CHECK-NEXT: File 0, [[@LINE+1]]:16 -> {{[0-9]+}}:2 = #0
foo(MD i)14*67e74705SXin Li void foo(MD i) {
15*67e74705SXin Li   switch (i) {
16*67e74705SXin Li   #define HANDLE_MD(X)                                          \
17*67e74705SXin Li   case MD::X:                                                   \
18*67e74705SXin Li     break;
19*67e74705SXin Li   #include "Inputs/md.def"
20*67e74705SXin Li   default:
21*67e74705SXin Li     BREAK;
22*67e74705SXin Li   }
23*67e74705SXin Li 
24*67e74705SXin Li   if (false)
25*67e74705SXin Li     nop();
26*67e74705SXin Li   #define HANDLE_MD(X) else if (i == MD::X) { nop(); }
27*67e74705SXin Li   #include "Inputs/md.def"
28*67e74705SXin Li }
29*67e74705SXin Li 
main(int argc,const char * argv[])30*67e74705SXin Li int main(int argc, const char *argv[]) {
31*67e74705SXin Li   foo(MD::Val1);
32*67e74705SXin Li   return 0;
33*67e74705SXin Li }
34