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

--- Comment #10 from Pierre-Marie de Rodat <derodat at adacore dot com> ---
(In reply to Richard Biener from comment #8)
> Yeah, setting DECL_PRESERVE_P would make it possible to add the
> location late since we'd not remove the decl.  Currently it's simply
> gone and the early dwarf2out_"late"_global_decl is the last thing
> we see from it...
Ok, understood.

> Currently struggling in getting a debuggable gnat1 built .. it looks
> like ./configure --enable-languages=c++,ada --disable-bootstrap
> no longer works with a host compiler that doesn't understand some
> C++ specs that appear to be used (GCC 4.8).
I’m using GCC 7.2.1. It’s odd that you get this issue only with gnat1, though…

(In reply to Richard Biener from comment #9)
> Another possibility would be to add the info symbolically by refering to the
> early DIE of the other entity.  Not sure if that works for the Ada cases? 
> We have
> DW_OP_GNU_variable_value but in this case we want the DIEs address.
In the original ADa use case, there is no other entity: the variable for which
we want to emit a location is around only for its name, so instead of
allocating a memory slot for it, we produce a “dummy” location (DW_OP_const1s:
-1). So I don’t know: would what you have in mind work? (just keeping producing
a location is enough for Ada, I think)

> Btw, if you compile any of your testcases for the issue with -g -flto
> can you verify if the generated object files contain relocations in the
> early LTO debug sections?  Those should not refer to real symbols...
> else the problem will manifest with Ada as well.
I’m confused: is this query for myself or for one Martin? ;-)

> So I think we do have to revert the revision in question (or put in the
> above hack).
Either way, in the end we need a solution that fixes the SPEC build error and
that does not make Ada debugging regress. :-)

I’m still not familiar with LTO and how early/late passes are supposed to work,
so I lack judgment about what is a hack and what isn’t. Do you think we can
find a clean way to delay location production from the “early late” pass to the
“truly late” one?

Reply via email to