40 lines · cpp
1// RUN: rm -rf %t && split-file %s %t && cd %t2// RUN: %clangxx --coverage main.cpp -o t3// RUN: %run ./t4// RUN: llvm-cov gcov -t t-main. | FileCheck %s5 6//--- main.cpp7#include "a.h"8#include <stdio.h>9 10// CHECK: Runs:111/// __cxx_global_var_init contains a block from a.h. Don't attribute its lines to main.cpp.12// CHECK-NOT: {{^ +[0-9]+:}}13 14inline auto *const inl_var_main = // CHECK: 1: [[#]]:inline auto15 new A; // CHECK-NEXT: 1: [[#]]:16void foo(int x) { // CHECK-NEXT: 1: [[#]]:17 if (x) { // CHECK-NEXT: 1: [[#]]:18#include "a.inc"19 } // CHECK: 1: [[#]]:20} // CHECK-NEXT: 1: [[#]]:21// CHECK-NOT: {{^ +[0-9]+:}}22 23int main(int argc, char *argv[]) { // CHECK: 1: [[#]]:int main24 foo(1); // CHECK-NEXT: 1: [[#]]:25} // CHECK-NEXT: 1: [[#]]:26// CHECK-NOT: {{^ +[0-9]+:}}27 28// CHECK: Source:a.h29// CHECK: 1: 1:struct A30// CHECK-NOT: {{^ +[0-9]+:}}31 32//--- a.h33/// Apple targets doesn't enable -mconstructor-aliases by default and the count may be 4.34struct A { A() { } }; // CHECK: {{[24]}}: [[#]]:struct A35inline auto *const inl_var_a = // CHECK-NEXT: 1: [[#]]:36 new A; // CHECK-NEXT: 1: [[#]]:37 38//--- a.inc39puts(""); // CHECK: 1: [[#]]:puts40