[Bug c++/95677] undefined reference to `(anonymous namespace)::xx'
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Mon Jun 15 08:12:51 GMT 2020
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95677
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |lto, wrong-code
Component|lto |c++
Version|lto |10.1.0
CC| |hubicka at gcc dot gnu.org,
| |jason at gcc dot gnu.org,
| |nathan at gcc dot gnu.org
--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
It's more likely the GENERIC / cgraph output by the C++ frontend is not correct
and works by accident without LTO. Initial symbol table:
Initial Symbol table:
int {anonymous}::xx/3 (int {anonymous}::xx) @0x7f615d2d8180
Type: variable
Visibility: external
References:
Referring: _ZN12_GLOBAL__N_13fooEv/0 (write)
Availability: not-ready
Varpool flags:
main/2 (int main()) @0x7f615d421168
Type: function definition analyzed
Visibility: force_output no_reorder public
Aux: @0x37a5000
References: int {anonymous}::xx/1 (write)
Referring:
Function flags: body
Called by:
Calls:
int {anonymous}::xx/1 (int {anonymous}::xx) @0x7f615d2d8100
Type: variable definition analyzed
Visibility: force_output no_reorder
Aux: @0x7f615d421168
References:
Referring: main/2 (write)
Availability: not-ready
Varpool flags: initialized
_ZN12_GLOBAL__N_13fooEv/0 (void {anonymous}::foo()) @0x7f615d421000
Type: function definition analyzed
Visibility: force_output no_reorder
Aux: @0x7f615d2d8100
References: int {anonymous}::xx/3 (write)
Referring:
Function flags: body
Called by:
Calls:
where you can see there are actually two 'xx' objects and the C++ FE
takes it up to the linker/assembler to resolve them. But the symtab
code does not include such "resolving" step.
More information about the Gcc-bugs
mailing list