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).

Reply via email to