https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96919
--- Comment #7 from Martin Liška <marxin at gcc dot gnu.org> --- (In reply to Libin Dang from comment #6) > (In reply to Martin Liška from comment #2) > > Using latest GCC release you can see what happens: > > > > $ g++ pr96919.cc --coverage && ./a.out && gcov a-pr96919.cc -t > > hello > > libgcov profiling > > error:/home/marxin/Programming/testcases/a-pr96919.gcda:overwriting an > > existing profile data with a different timestamp > > -: 0:Source:pr96919.cc > > -: 0:Graph:a-pr96919.gcno > > -: 0:Data:a-pr96919.gcda > > -: 0:Runs:1 > > -: 1:class Base { > > -: 2:public: > > -: 3: Base() = default; > > 1*: 4: virtual ~Base() = default; > > ------------------ > > _ZN4BaseD0Ev: > > #####: 4: virtual ~Base() = default; > > ------------------ > > _ZN4BaseD2Ev: > > 1: 4: virtual ~Base() = default; > > ------------------ > > -: 5: virtual void foo() = 0; > > -: 6:}; > > -: 7:class Hello : public Base { > > -: 8:public: > > -: 9: Hello() = default; > > 1*: 10: ~Hello() = default; > > ------------------ > > _ZN5HelloD0Ev: > > #####: 10: ~Hello() = default; > > ------------------ > > _ZN5HelloD2Ev: > > 1: 10: ~Hello() = default; > > ------------------ > > -: 11: void foo() override; > > -: 12:}; > > -: 13: > > -: 14:#include <iostream> > > -: 15: > > -: 16:using namespace std; > > -: 17: > > 1: 18:void Hello::foo() { > > 1: 19: cout << "hello" << endl; > > 1: 20:} > > -: 21: > > 1: 22:int main(int argc, char* argv[]) { > > #####: 23: Hello hello; > > 1: 24: hello.foo(); > > 1: 25: return 0; > > -: 26:} > > > > So yes, it's a virtual destructor _ZN4BaseD0Ev that is not called. > > And the not executed line: > > #####: 4: Hello hello; > > > > corresponds to a basic block > > > > <bb 5> : > > <L3>: > > Hello::~Hello (&hello); > > resx 2 > > > > which would be executed when the Hellow constructor fails. > > A strange thing about this test case: > > If I removed 'return 0;' at line 25, gcov will mark line 23 as executed. > > > Tested with both gcov 8.3 and 10.2. I can confirm that.