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

            Bug ID: 98631
           Summary: exception hit once reported twice
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: gcov-profile
          Assignee: unassigned at gcc dot gnu.org
          Reporter: mpolacek at gcc dot gnu.org
                CC: marxin at gcc dot gnu.org
  Target Milestone: ---

I've got the following complaint: with the attached testcase (m.C):

$ g++ -fprofile-arcs -ftest-coverage -g m.C
$ ./a.out 
caught
$ gcov m.C
File 'm.C'
Lines executed:90.91% of 11
Creating 'm.C.gcov'
$ less m.C.gcov
        -:    0:Source:m.C
        -:    0:Graph:m.gcno
        -:    0:Data:m.gcda
        -:    0:Runs:1
        -:    1:struct S {
        1:    2:  S() {
        1:    3:    foo ();
        1:    4:    bar ();
    #####:    5:  }
        1:    6:  void foo () { }
        1:    7:  void bar () { throw 1; }
        -:    8:};
        -:    9:
        -:   10:int
        1:   11:main ()
        -:   12:{
        -:   13:  try {
        1:   14:    S s;
        2:   15:  } catch(...) {
        1:   16:    __builtin_printf ("caught\n");
        -:   17:  }
        1:   18:}

this shows that line 15 was executed twice, which seems dubious.  Then this
doesn't play well with tools like "perf stat" -- it results in two uprobes.

$ less m.C
struct S {
  S() {
    foo ();
    bar ();
  }
  void foo () { }
  void bar () { throw 1; }
};

int
main ()
{
  try {
    S s;
  } catch(...) {
    __builtin_printf ("caught\n");
  }
}

Reply via email to