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

            Bug ID: 89601
           Summary: ICE: Segmentation fault (in resolve_component)
           Product: gcc
           Version: 9.0
            Status: UNCONFIRMED
          Keywords: ice-on-invalid-code
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: asolokha at gmx dot com
  Target Milestone: ---

gfortran-9.0.0-alpha20190303 snapshot (r269357) ICEs when compiling the
following testcase:

program vw
  interface
     real function ul (ki)
       real :: ki
     end function ul
  end interface
  type :: q8 ()
     procedure (ul), pointer :: pj
  end type q8
  type (q8) :: ki
end program vw

% powerpc-e300c3-linux-gnu-gfortran-9.0.0-alpha20190303 -c ebntren1.f90
f951: internal compiler error: Segmentation fault
0xd9cad6 crash_signal
       
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20190303/work/gcc-9-20190303/gcc/toplev.c:326
0x81191f resolve_component
       
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20190303/work/gcc-9-20190303/gcc/fortran/resolve.c:13964
0x81191f resolve_component
       
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20190303/work/gcc-9-20190303/gcc/fortran/resolve.c:13817
0x812272 resolve_fl_derived0
       
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20190303/work/gcc-9-20190303/gcc/fortran/resolve.c:14314
0x8128bf resolve_fl_derived0
       
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20190303/work/gcc-9-20190303/gcc/fortran/resolve.c:14413
0x8128bf resolve_fl_derived
       
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20190303/work/gcc-9-20190303/gcc/fortran/resolve.c:14443
0x80f017 resolve_symbol
       
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20190303/work/gcc-9-20190303/gcc/fortran/resolve.c:14817
0x837dc2 do_traverse_symtree
       
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20190303/work/gcc-9-20190303/gcc/fortran/symbol.c:4156
0x81c165 resolve_types
       
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20190303/work/gcc-9-20190303/gcc/fortran/resolve.c:16729
0x80dfbe gfc_resolve(gfc_namespace*)
       
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20190303/work/gcc-9-20190303/gcc/fortran/resolve.c:16843
0x80dfbe gfc_resolve(gfc_namespace*)
       
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20190303/work/gcc-9-20190303/gcc/fortran/resolve.c:16824
0x7ffc76 resolve_all_program_units
       
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20190303/work/gcc-9-20190303/gcc/fortran/parse.c:6073
0x7ffc76 gfc_parse_file()
       
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20190303/work/gcc-9-20190303/gcc/fortran/parse.c:6323
0x84dd5e gfc_be_parse_file
       
/var/tmp/portage/cross-powerpc-e300c3-linux-gnu/gcc-9.0.0_alpha20190303/work/gcc-9-20190303/gcc/fortran/f95-lang.c:204

==24699== Invalid read of size 8
==24699==    at 0x81191F: resolve_component (resolve.c:13964)
==24699==    by 0x81191F: resolve_component(gfc_component*, gfc_symbol*)
(resolve.c:13817)
==24699==    by 0x812272: resolve_fl_derived0(gfc_symbol*) [clone .part.54]
(resolve.c:14314)
==24699==    by 0x8128BF: resolve_fl_derived0 (resolve.c:14413)
==24699==    by 0x8128BF: resolve_fl_derived(gfc_symbol*) (resolve.c:14443)
==24699==    by 0x80F017: resolve_symbol(gfc_symbol*) (resolve.c:14817)
==24699==    by 0x837DC2: do_traverse_symtree(gfc_symtree*, void
(*)(gfc_symtree*), void (*)(gfc_symbol*)) (symbol.c:4156)
==24699==    by 0x81C165: resolve_types(gfc_namespace*) (resolve.c:16729)
==24699==    by 0x80DFBE: gfc_resolve (resolve.c:16843)
==24699==    by 0x80DFBE: gfc_resolve(gfc_namespace*) (resolve.c:16824)
==24699==    by 0x7FFC76: resolve_all_program_units (parse.c:6073)
==24699==    by 0x7FFC76: gfc_parse_file() (parse.c:6323)
==24699==    by 0x84DD5E: gfc_be_parse_file() (f95-lang.c:204)
==24699==    by 0xD9CB6C: compile_file() (toplev.c:456)
==24699==    by 0x764E83: do_compile (toplev.c:2204)
==24699==    by 0x764E83: toplev::main(int, char**) (toplev.c:2339)
==24699==    by 0x7673AD: main (main.c:39)
==24699==  Address 0x30 is not stack'd, malloc'd or (recently) free'd

(While my target here is powerpc, the ICE is not target-specific.)

Reply via email to