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

--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to Iain Sandoe from comment #2)
> (In reply to Richard Biener from comment #1)
> > I'm seeing all code properly instrumented.  The coverage I see is
> <snip>
> >         1:   27:task foo() {
> >         -:   28:  std::cout << "Running..." << std::endl;
> >         -:   29:  co_return;
> >         2:   30:}
> <snip>
> > 
> > I have no idea why for example line 28 isn't marked executed.
> 
> So we are recognising that the ramp function has run:
>  foo () {
>  .... compiler-generated code with no line numbers
>  }
> 
> but execution of the the outlined body (which is the 'actor' function) is
> not, apparently recorded.
> 
> The actor is essentially:
>  
> foo.actor()
>  .. compiler-generated code no line numbers
>  {
>    std::cout << "Running..." << std::endl;
>    co_return;
>  }
>  .. compiler-generated code no line numbers
> 
> co_return expands to some compiler-generated code too - so it's possible the
> line numbers get confusing there - but the cout line ought to be
> uncontroversial.

Hmm, OK.  I see both 'task foo' and _Z3fooPZ3foovE13_Z3foov.Frame.actor
printed as functions "foo" in the IL dump.  Maybe coverage is somehow
confused here.

Maybe coverage doesn't work with nested functions (or C++ lambda) either?

As said, there are edge counters present so it must be either a bug on
the receiving side (in gcov) or the data is not appropriately attributed.

Reply via email to