1*17e25217SReid Kleckner // RUN: %clangxx_profgen -fcoverage-mapping %S/Inputs/instrprof-visibility-helper.cpp -o %t %s 2*17e25217SReid Kleckner // RUN: env LLVM_PROFILE_FILE=%t.profraw %run %t 3*17e25217SReid Kleckner // RUN: llvm-profdata merge %t.profraw -o %t.profdata 4*17e25217SReid Kleckner // RUN: llvm-profdata show --all-functions %t.profraw | FileCheck -allow-deprecated-dag-overlap %s --check-prefix=PROFILE 5*17e25217SReid Kleckner // RUN: llvm-cov show %t -instr-profile=%t.profdata | FileCheck -allow-deprecated-dag-overlap %s --check-prefix=COV 6*17e25217SReid Kleckner 7*17e25217SReid Kleckner namespace { 8*17e25217SReid Kleckner #define NO_WEAK 9*17e25217SReid Kleckner #define NO_EXTERN 10*17e25217SReid Kleckner #include "instrprof-visibility-kinds.inc" 11*17e25217SReid Kleckner #undef NO_EXTERN 12*17e25217SReid Kleckner #undef NO_WEAK 13*17e25217SReid Kleckner } 14*17e25217SReid Kleckner 15*17e25217SReid Kleckner namespace N1 { 16*17e25217SReid Kleckner #include "instrprof-visibility-kinds.inc" 17*17e25217SReid Kleckner } 18*17e25217SReid Kleckner main()19*17e25217SReid Klecknerint main() { 20*17e25217SReid Kleckner call(); 21*17e25217SReid Kleckner N1::call(); 22*17e25217SReid Kleckner return 0; 23*17e25217SReid Kleckner } 24*17e25217SReid Kleckner 25*17e25217SReid Kleckner // PROFILE-DAG: _ZN2N12f1Ev 26*17e25217SReid Kleckner // PROFILE-DAG: _ZN2N12f2Ev 27*17e25217SReid Kleckner // PROFILE-DAG: _ZN2N12f3Ev 28*17e25217SReid Kleckner // PROFILE-DAG: _ZN2N12f4Ev 29*17e25217SReid Kleckner // PROFILE-DAG: _ZN2N12f5Ev 30*17e25217SReid Kleckner // PROFILE-DAG: _ZN2N12f6Ev 31*17e25217SReid Kleckner // PROFILE-DAG: _ZN2N12f7Ev 32*17e25217SReid Kleckner // PROFILE-DAG: _ZN2N14callEv 33*17e25217SReid Kleckner // PROFILE-DAG: main 34*17e25217SReid Kleckner // PROFILE-DAG: instrprof-visibility.cpp:_ZN12_GLOBAL__N_14callEv 35*17e25217SReid Kleckner // PROFILE-DAG: instrprof-visibility.cpp:_ZN12_GLOBAL__N_12f1Ev 36*17e25217SReid Kleckner // PROFILE-DAG: instrprof-visibility.cpp:_ZN12_GLOBAL__N_12f3Ev 37*17e25217SReid Kleckner // PROFILE-DAG: instrprof-visibility.cpp:_ZN12_GLOBAL__N_12f5Ev 38*17e25217SReid Kleckner // PROFILE-DAG: instrprof-visibility.cpp:_ZN12_GLOBAL__N_12f6Ev 39*17e25217SReid Kleckner // PROFILE-DAG: instrprof-visibility.cpp:_ZN12_GLOBAL__N_12f7Ev 40*17e25217SReid Kleckner // PROFILE-DAG: Total functions: 15 41*17e25217SReid Kleckner 42*17e25217SReid Kleckner // COV-DAG: instrprof-visibility-helper.cpp 43*17e25217SReid Kleckner 44*17e25217SReid Kleckner // COV-DAG: instrprof-visibility-kinds.inc 45*17e25217SReid Kleckner 46*17e25217SReid Kleckner // COV-DAG: _ZN2N12f1Ev 47*17e25217SReid Kleckner // COV-DAG: instrprof-visibility.cpp:_ZN12_GLOBAL__N_12f1Ev 48*17e25217SReid Kleckner // COV-DAG: instrprof-visibility.cpp:_ZN12_GLOBAL__N_12f3Ev 49*17e25217SReid Kleckner // COV-DAG: _ZN2N12f3Ev 50*17e25217SReid Kleckner // COV-DAG: instrprof-visibility.cpp:_ZN12_GLOBAL__N_12f5Ev 51*17e25217SReid Kleckner // COV-DAG: _ZN2N12f5Ev 52*17e25217SReid Kleckner // COV-DAG: _ZN2N12f6Ev 53*17e25217SReid Kleckner // COV-DAG: instrprof-visibility.cpp:_ZN12_GLOBAL__N_12f6Ev 54*17e25217SReid Kleckner // COV-DAG: instrprof-visibility.cpp:_ZN12_GLOBAL__N_12f7Ev 55*17e25217SReid Kleckner // COV-DAG: _ZN2N12f7Ev 56*17e25217SReid Kleckner 57*17e25217SReid Kleckner // --- Check coverage for functions in the anonymous namespace. 58*17e25217SReid Kleckner // COV-DAG: instrprof-visibility.cpp:_ZN12_GLOBAL__N_14callEv 59*17e25217SReid Kleckner // COV-DAG: [[CALL:[0-9]+]]|{{ *}}1|void call() { 60*17e25217SReid Kleckner // COV-DAG: {{.*}}|{{ *}}1| f1(); 61*17e25217SReid Kleckner // COV-DAG: {{.*}}|{{ *}}1|#ifndef NO_WEAK 62*17e25217SReid Kleckner // COV-DAG: {{.*}}|{{ *}} | f2(); 63*17e25217SReid Kleckner // COV-DAG: {{.*}}|{{ *}} |#endif 64*17e25217SReid Kleckner // COV-DAG: {{.*}}|{{ *}}1| f3(); 65*17e25217SReid Kleckner // COV-DAG: {{.*}}|{{ *}}1|#ifndef NO_EXTERN 66*17e25217SReid Kleckner // COV-DAG: {{.*}}|{{ *}} | f4(); 67*17e25217SReid Kleckner // COV-DAG: {{.*}}|{{ *}} |#endif 68*17e25217SReid Kleckner // COV-DAG: {{.*}}|{{ *}}1| f5(); 69*17e25217SReid Kleckner // COV-DAG: {{.*}}|{{ *}}1| f6(); 70*17e25217SReid Kleckner // COV-DAG: {{.*}}|{{ *}}1| f7(); 71*17e25217SReid Kleckner // COV-DAG: {{.*}}|{{ *}}1|} 72*17e25217SReid Kleckner 73*17e25217SReid Kleckner // --- Check coverage for functions in namespace N1. 74*17e25217SReid Kleckner // COV-DAG: _ZN2N14callEv 75*17e25217SReid Kleckner // COV-DAG: {{ *}}[[CALL]]|{{ *}}1|void call() { 76*17e25217SReid Kleckner // COV-DAG: {{.*}}|{{ *}}1| f1(); 77*17e25217SReid Kleckner // COV-DAG: {{.*}}|{{ *}}1|#ifndef NO_WEAK 78*17e25217SReid Kleckner // COV-DAG: {{.*}}|{{ *}}1| f2(); 79*17e25217SReid Kleckner // COV-DAG: {{.*}}|{{ *}}1|#endif 80*17e25217SReid Kleckner // COV-DAG: {{.*}}|{{ *}}1| f3(); 81*17e25217SReid Kleckner // COV-DAG: {{.*}}|{{ *}}1|#ifndef NO_EXTERN 82*17e25217SReid Kleckner // COV-DAG: {{.*}}|{{ *}}1| f4(); 83*17e25217SReid Kleckner // COV-DAG: {{.*}}|{{ *}}1|#endif 84*17e25217SReid Kleckner // COV-DAG: {{.*}}|{{ *}}1| f5(); 85*17e25217SReid Kleckner // COV-DAG: {{.*}}|{{ *}}1| f6(); 86*17e25217SReid Kleckner // COV-DAG: {{.*}}|{{ *}}1| f7(); 87*17e25217SReid Kleckner // COV-DAG: {{.*}}|{{ *}}1|} 88*17e25217SReid Kleckner 89*17e25217SReid Kleckner // COV-DAG: instrprof-visibility.cpp 90