https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95677
--- Comment #2 from liusujian <sujian.liu at huawei dot com> --- (In reply to Richard Biener from comment #1) > 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. In other words, C++ is currently unable to deal with this scenario ? Or any other problems cause the error?