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