https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65173
--- Comment #11 from kargl at gcc dot gnu.org --- (In reply to kargl from comment #10) > (In reply to Gerhard Steinmetz from comment #9) > > Another example, together with LANG=de_DE.UTF-8 : > > > > > > $ cat zz1.f90 > > program p > > type t > > character, allocatable :: z1(:), z1(:) > > end type > > end > > > > > > $ gfortran-7-20161204 -m32 zz1.f90 > > zz1.f90:3:37-44: > > > > character, allocatable :: z1(:), z1(:) > > 2 1 > > Error: Component »z1« at (1) already declared at (2) > > f951: internal compiler error: Speicherzugriffsfehler > > 0xc4940f crash_signal > > ../../gcc/toplev.c:333 > > 0x6f3aea gfc_resolve_expr(gfc_expr*) > > ../../gcc/fortran/resolve.c:6465 > > (gdb) bt > (gdb) bt > #0 gfc_is_constant_expr (e=0x837f) at ../../gcc7/gcc/fortran/expr.c:894 > #1 0x000000000065a320 in resolve_component (c=0x20365f8c0, sym=0x203635f00) > at ../../gcc7/gcc/fortran/resolve.c:13507 > #2 0x000000000065a9ab in resolve_fl_derived0 (sym=sym@entry=0x203635f00) > at ../../gcc7/gcc/fortran/resolve.c:13738 > ... > (gdb) up > #1 0x000000000065a320 in resolve_component (c=0x20365f8c0, sym=0x203635f00) > at ../../gcc7/gcc/fortran/resolve.c:13507 > 13507 || !gfc_is_constant_expr (c->ts.u.cl->length)) > (gdb) p *c->ts.u.cl > $5 = {length = 0x837f, next = 0x20362b5d0, length_from_typespec = false, > backend_decl = 0x2039d8040, passed_length = 0x0, resolved = 56844672} > > length=0x837f is an invalid pointer. So, gfortran ICE's. This > looks similar to the fight that Janus waged this weekend. For > some reason, a CHARACTER(LEN=....) component in a derived type > does not set the length correctly. Well, this is due to reject_statement(), which frees memory associated with charlen. It seems we have a tangling pointer that needs to be explicitly NULLed, but I cannot find it. If the code is changed to program p type t character, allocatable :: z1(:) character, allocatable :: z1(:) end type end gfortran generates an error message without the ICE because the charlen from the first statement is not cleared.