/* Check that execution counts for template functions are reported correctly by gcov. */ #include #include /* { dg-options "-fprofile-arcs -ftest-coverage -fno-inline" } */ /* { dg-do run { target native } } */ class A { int count; public: A(int c) { count = c; } void func(void) { printf("func\n"); } bool done(void) { return (count == 0) ? true : (count-- != 0); } void run(void) { abort(); } }; //typedef A T; template void WithoutBrace(T *a) { while (!a->done()) a->run(); /* count(#####) */ } /* count(1) */ template void WithBrace(T *a) { while (!a->done()) { a->run(); /* count(#####) */ } } /* count(1) */ A *func(A *a) { WithoutBrace(a); WithBrace(a); return a; } int main() { A a(0); func(&a); return 0; } /* { dg-final { run-gcov gcov-5.C } } */