https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97062

            Bug ID: 97062
           Summary: [gcov] Don't repeat display of inline functions in
                    headers
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: gcov-profile
          Assignee: unassigned at gcc dot gnu.org
          Reporter: i at maskray dot me
                CC: marxin at gcc dot gnu.org
  Target Milestone: ---

This is a minor display issue.

>a.cc cat<<e
#include "a.h"
void foo();
int main() {
  foo();
  bar();
}
e
>b.cc cat<<e
#include "a.h"
void foo() {
  bar();
}
e
>a.h cat<<e
inline void bar() {
  ;
}
e

rm -f *.gcda; g++-10 --coverage a.cc b.cc; ./a.out

If I specify multiple input on the command line:

% gcov-10 -t a. b.
        -:    0:Source:a.cc
        -:    1:#include "a.h"
        -:    2:void foo();
        1:    3:int main() {
        1:    4:  foo();
        1:    5:  bar();
        1:    6:}
        -:    0:Source:a.h
       2*:    1:inline void bar() {
        -:    2:  ;
       2*:    3:}
------------------
_Z3barv:
        2:    1:inline void bar() {
        -:    2:  ;
        2:    3:}
------------------
_Z3barv:
    #####:    1:inline void bar() {
        -:    2:  ;
    #####:    3:}
------------------
        -:    0:Source:b.cc
        -:    1:#include "a.h"
        1:    2:void foo() {
        1:    3:  bar();
        1:    4:}


bar is replicated. One may argue that bar should not be replicated because a.cc
and b.cc are calling the same copy. (If bar is `static inline`, duplication may
be justified, but gcov does not encode the linkage of functions)

Reply via email to