https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65173

kargl at gcc dot gnu.org changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |kargl at gcc dot gnu.org

--- Comment #10 from kargl at gcc dot gnu.org ---
(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.

Reply via email to