http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58355

            Bug ID: 58355
           Summary: ICE with TYPE, EXTENDS before parent TYPE defined
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: abensonca at gmail dot com

With gfortran 4.9.0 the following causes an ICE:

module ct
  public :: cfc, cfl, cfde
  type :: cfc
  end type cfc
  type, extends(cfl) :: cfde
  end type cfde
  type, extends(cfc) :: cfl
  end type cfl
end module ct


$ gfortran -v
Using built-in specs.
COLLECT_GCC=/opt/gcc-trunk/bin/gfortran
COLLECT_LTO_WRAPPER=/opt/gcc-trunk/libexec/gcc/x86_64-unknown-linux-gnu/4.9.0/lto-wrapper
Target: x86_64-unknown-linux-gnu
Configured with: ../gcc-trunk/configure --prefix=/opt/gcc-trunk
--enable-languages=c,c++,fortran --disable-multilib
Thread model: posix
gcc version 4.9.0 20130808 (experimental) (GCC) 

$ gfortran -c bug.F90 -o bug.o
f951: internal compiler error: Segmentation fault
0x97d66f crash_signal
        ../../gcc-trunk/gcc/toplev.c:335
0x52dec1 check_extended_derived_type
        ../../gcc-trunk/gcc/fortran/decl.c:7412
0x52dec1 gfc_match_derived_decl()
        ../../gcc-trunk/gcc/fortran/decl.c:7541
0x5770d9 match_word
        ../../gcc-trunk/gcc/fortran/parse.c:65
0x578561 decode_statement
        ../../gcc-trunk/gcc/fortran/parse.c:502
0x5796a4 next_free
        ../../gcc-trunk/gcc/fortran/parse.c:784
0x5796a4 next_statement
        ../../gcc-trunk/gcc/fortran/parse.c:977
0x579f34 parse_spec
        ../../gcc-trunk/gcc/fortran/parse.c:2741
0x57ccf8 parse_module
        ../../gcc-trunk/gcc/fortran/parse.c:4313
0x57ccf8 gfc_parse_file()
        ../../gcc-trunk/gcc/fortran/parse.c:4625
0x5b8ce5 gfc_be_parse_file
        ../../gcc-trunk/gcc/fortran/f95-lang.c:189
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <http://gcc.gnu.org/bugs.html> for instructions.

The PUBLIC statement is required for the ICE to happen. switching the order of
the definitions of the "cfde" and "cfl" types results in a success compile.

I can't currently test this with the most recent revision of gfortran due to
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58350

Reply via email to