https://gcc.gnu.org/bugzilla/show_bug.cgi?id=128488
Harald Anlauf <anlauf at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Keywords| |ice-on-valid-code
--- Comment #5 from Harald Anlauf <anlauf at gcc dot gnu.org> ---
Commenting line 11 also avoids the ICE.
Running under valgrind or gdb, it appears that we have a resolution issue.
In frontend-passes.cc:check_externals_expr I see:
(gdb) p *e->symtree
$18 = {priority = 16424, left = 0x0, right = 0x0, name = 0x7ffff741a870
"str_onlychars",
ambiguous = 0, n = {sym = 0x518a4e0, uop = 0x518a4e0, common = 0x518a4e0,
tb = 0x518a4e0, omp_udr = 0x518a4e0, omp_udm = 0x518a4e0}, import_only = 0}
but
(gdb) p e->value.function
$13 = {actual = 0x5174e80, name = 0x7ffff741a870 "str_onlychars", isym = 0x0,
esym = 0x5174bd0}
(gdb) p e->value.function.esym
$14 = (gfc_symbol *) 0x5174bd0
(gdb) p *e->value.function.esym
$15 = {name = 0x3 <error: Cannot access memory at address 0x3>,
module = 0x400000001 <error: Cannot access memory at address 0x400000001>,
(I used MALLOC_PERTURB_=3).