https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61766
Bug ID: 61766 Summary: [4.9 regression] ICE on trans-array.c Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: fortran Assignee: unassigned at gcc dot gnu.org Reporter: juergen.reuter at desy dot de The following code triggers an ICE with 4.9.0 but seems to work with 4.7.X, 4.8.X, and 4.10: gfortran -c prc_gosam.f90 prc_gosam.f90: In function â__final_prc_gosam_Gosam_writer_tâ: prc_gosam.f90:62:0: internal compiler error: in gfc_conv_descriptor_data_get, at fortran/trans-array.c:145 end module prc_gosam ^ prc_gosam.f90:62:0: internal compiler error: Abort trap: 6 gfortran: internal compiler error: Abort trap: 6 (program f951) The code is (with the standard iso_varying_string.f90): 1 module prclib_interfaces 2 use iso_varying_string, string_t => varying_string !NODEP! 3 implicit none 4 private 5 public :: prc_writer_f_module_t 6 7 type, abstract :: prc_writer_t 8 contains 9 procedure(get_const_string), nopass, deferred :: type_name 10 end type prc_writer_t 11 12 type, extends (prc_writer_t), abstract :: prc_writer_f_module_t 13 end type prc_writer_f_module_t 14 15 abstract interface 16 function get_const_string () result (string) 17 import 18 type(string_t) :: string 19 end function get_const_string 20 end interface 21 22 end module prclib_interfaces 23 24 !!!!! 25 26 module blha_config 27 use iso_varying_string, string_t => varying_string !NODEP! 28 implicit none 29 private 30 public :: blha_configuration_t 31 type :: blha_configuration_t 32 type(string_t), dimension (2) :: matrix_element_square_type_other 33 end type blha_configuration_t 34 end module blha_config 35 36 !!!!! 37 38 module prc_gosam 39 use iso_varying_string, string_t => varying_string !NODEP! 40 use prclib_interfaces 41 use blha_config 42 implicit none 43 private 44 type, extends (prc_writer_f_module_t) :: gosam_writer_t 45 type(blha_configuration_t) :: blha_cfg 46 contains 47 procedure, nopass :: type_name => gosam_writer_type_name 48 end type gosam_writer_t 49 50 contains 51 52 function gosam_writer_type_name () result (string) 53 type(string_t) :: string 54 string = "gosam" 55 end function gosam_writer_type_name 56 57 function gosam_writer_get_process_string (writer) result (s_proc) 58 class(gosam_writer_t), intent(in) :: writer 59 type(string_t) :: s_proc 60 end function gosam_writer_get_process_string 61 62 end module prc_gosam