[Bug debug/94469] lto abstract variable emitted as concrete decl (ada test-case)
vries at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Apr 6 11:27:40 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=94469
--- Comment #8 from Tom de Vries <vries at gcc dot gnu.org> ---
(In reply to Richard Biener from comment #7)
> (In reply to Richard Biener from comment #6)
> > Btw, I still wonder how it works with abstract functions, inline and
> > concrete instances. Works in gdb, that is - will dig into it a bit after
> > lunch.
>
> So here I see us (without LTO) putting DW_AT_location attributes on the
> abstract instance copy. That kind-of makes it not abstract anymore, no?
> But that way we avoid emitting multiple DIEs for local statics. With
> -flto the same problem appears there because we cannot annotate the
> early CUs DIE with a location so the concrete instance copy
> gets [generated and] the location.
>
> So while I intended to have the early CUs behave like fully abstract
> the actual DWARF is different. I understand that if I emit the early CU as
> partial unit it becomes abstract?
Well, that's my theory.
I've created a minimal dwarf assembler variant corresponding to the C test-case
(with only var aaa), and I could reproduce the problem, however after changing
the tag to DW_TAG_partial_unit still a symbol table for that partial unit was
created. It seems that the inter-cu ref handling code is responsible for that.
I'll try to fix this.
> Note we do emit DW_AT_const_value
> to early optimized out decls - would those still be found when the early CU
> is partial [and not imported anywhere]?
I think so, but I could check with the dwarf assembler test-case.
More information about the Gcc-bugs
mailing list