[Bug testsuite/83983] FAIL: g++.dg/lto/pr83121 (test for LTO warnings, pr83121_0.C line 8)
sje at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Feb 21 23:19:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83983
Steve Ellcey <sje at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |sje at gcc dot gnu.org
--- Comment #3 from Steve Ellcey <sje at gcc dot gnu.org> ---
I tried digging into this some but was not able to come up with a fix.
I compared x86, which gives the expected error messages with aarch64
which gives different errors and tried to find out where they diverged.
I tracked it down to get_odr_type in ipa-devirt.c. Just before:
if (val->type != type
&& (!val->types_set || !val->types_set->add (type)))
I added this print statement:
fprintf(stderr,"%p %p %p\n", (void *) type, (void *) val->type, (void *)
val->types_set);
On x86 I see:
0x7f98aa018dc8 0x7f98aa018930 (nil)
0x7f98aa0189d8 0x7f98aa018d20 (nil)
0x7f98aa0189d8 0x7f98aa018d20 0x32c9610
0x7f0222cbfc78 0x7f0222cbf9d8 (nil)
0x7f0222cbfa80 0x7f0222cbfa80 (nil)
On Aarch64 I see:
0x4002c859aaa0 0x4002c859a758 (nil)
0x4002c859a6b0 0x4002c859a6b0 (nil)
0x4002c859a6b0 0x4002c859a6b0 (nil)
0x4001f45aa9f8 0x4001f45aa758 (nil)
0x4001f45aa800 0x4001f45aa800 (nil)
I think the second line where type and val->type are the same
for Aarch64 but not for x86 is where the problem is but I am not
sure why we have this difference.
I think it may be a bug in the odr hash function with an accidental
hash collision but I am not sure.
More information about the Gcc-bugs
mailing list