The following program gives an ICE: $ gfortran -fcoarray=single test.f90 test.f90: In Funktion »MAIN__«: test.f90:5:0: interner Compiler-Fehler: Speicherzugriffsfehler a= 5 ^ 0x99dc9f crash_signal ../../gcc/toplev.c:332 0x5fde88 tree_class_check ../../gcc/tree.h:3801 0x5fde88 gfc_conv_array_data(tree_node*) ../../gcc/fortran/trans-array.c:2662 class(*), allocatable :: A[:] allocate(integer :: a[*]) select type(a) type is (integer) a= 5 print *, a end select end
I was aware of this. Is there not already a PR that covers it? Cheers Paul
Update : $ gfortran-8-20171105 -c pr56496.f90 -fcoarray=single pr56496.f90:5:0: a= 5 internal compiler error: Segmentation fault 0xb60fdf crash_signal ../../gcc/toplev.c:324 0x737444 gfc_conv_array_data(tree_node*) ../../gcc/fortran/trans-array.c:2936 0x73797d gfc_conv_ss_descriptor ../../gcc/fortran/trans-array.c:2874 0x73a167 gfc_conv_ss_startstride(gfc_loopinfo*) ../../gcc/fortran/trans-array.c:4227 0x76af6b gfc_trans_assignment_1 ../../gcc/fortran/trans-expr.c:9954 0x7301b7 trans_code ../../gcc/fortran/trans.c:1828 0x79b208 gfc_trans_block_construct(gfc_code*) ../../gcc/fortran/trans-stmt.c:1877 0x72ffd7 trans_code ../../gcc/fortran/trans.c:1924 0x79d4a7 gfc_trans_select_type_cases ../../gcc/fortran/trans-stmt.c:2475 0x79d4a7 gfc_trans_select_type(gfc_code*) ../../gcc/fortran/trans-stmt.c:3185 0x72ff47 trans_code ../../gcc/fortran/trans.c:1944 0x79b208 gfc_trans_block_construct(gfc_code*) ../../gcc/fortran/trans-stmt.c:1877 0x72ffd7 trans_code ../../gcc/fortran/trans.c:1924 0x756bfc gfc_generate_function_code(gfc_namespace*) ../../gcc/fortran/trans-decl.c:6421 0x6e8b90 translate_all_program_units ../../gcc/fortran/parse.c:6091 0x6e8b90 gfc_parse_file() ../../gcc/fortran/parse.c:6294 0x72d3bf gfc_be_parse_file ../../gcc/fortran/f95-lang.c:204
Further reduced : $ cat z1.f90 program p class(*), allocatable :: a[:] allocate (integer :: a[*]) select type (a) type is (integer) end select end $ gfortran-8-20171105 -c z1.f90 -fcoarray=single z1.f90:1:0: program p internal compiler error: in gfc_conv_array_ref, at fortran/trans-array.c:3512 0x739662 gfc_conv_array_ref(gfc_se*, gfc_array_ref*, gfc_expr*, locus*) ../../gcc/fortran/trans-array.c:3512 0x7667cd gfc_conv_variable ../../gcc/fortran/trans-expr.c:2680 0x79b575 trans_associate_var ../../gcc/fortran/trans-stmt.c:1769 0x79b575 gfc_trans_block_construct(gfc_code*) ../../gcc/fortran/trans-stmt.c:1884 0x72ffd7 trans_code ../../gcc/fortran/trans.c:1924 0x79d4a7 gfc_trans_select_type_cases ../../gcc/fortran/trans-stmt.c:2475 0x79d4a7 gfc_trans_select_type(gfc_code*) ../../gcc/fortran/trans-stmt.c:3185 0x72ff47 trans_code ../../gcc/fortran/trans.c:1944 0x79b208 gfc_trans_block_construct(gfc_code*) ../../gcc/fortran/trans-stmt.c:1877 0x72ffd7 trans_code ../../gcc/fortran/trans.c:1924 0x756bfc gfc_generate_function_code(gfc_namespace*) ../../gcc/fortran/trans-decl.c:6421 0x6e8b90 translate_all_program_units ../../gcc/fortran/parse.c:6091 0x6e8b90 gfc_parse_file() ../../gcc/fortran/parse.c:6294 0x72d3bf gfc_be_parse_file ../../gcc/fortran/f95-lang.c:204
Slightly modified : $ cat z1.f90 program p class(*), allocatable :: a[:] allocate (integer :: a[*]) select type (a) type is (integer) a = a(1) end select end $ gfortran-9-20181104 -c z1.f90 -fcoarray=single z1.f90:6:0: 6 | a = a(1) | internal compiler error: in gfc_walk_array_ref, at fortran/trans-array.c:10574 0x6ce074 gfc_walk_array_ref(gfc_ss*, gfc_expr*, gfc_ref*) ../../gcc/fortran/trans-array.c:10574 0x6ce920 gfc_walk_expr(gfc_expr*) ../../gcc/fortran/trans-array.c:10886 0x6fc5f7 gfc_trans_assignment_1 ../../gcc/fortran/trans-expr.c:10185 0x6bf54f trans_code ../../gcc/fortran/trans.c:1822 0x72d10f gfc_trans_block_construct(gfc_code*) ../../gcc/fortran/trans-stmt.c:2066 0x6bf6f7 trans_code ../../gcc/fortran/trans.c:1918 0x72e269 gfc_trans_select_type_cases ../../gcc/fortran/trans-stmt.c:2674 0x72e269 gfc_trans_select_type(gfc_code*) ../../gcc/fortran/trans-stmt.c:3383 0x6bf787 trans_code ../../gcc/fortran/trans.c:1938 0x72d10f gfc_trans_block_construct(gfc_code*) ../../gcc/fortran/trans-stmt.c:2066 0x6bf6f7 trans_code ../../gcc/fortran/trans.c:1918 0x6e6e14 gfc_generate_function_code(gfc_namespace*) ../../gcc/fortran/trans-decl.c:6509 0x6740a6 translate_all_program_units ../../gcc/fortran/parse.c:6125 0x6740a6 gfc_parse_file() ../../gcc/fortran/parse.c:6328 0x6bc03f gfc_be_parse_file ../../gcc/fortran/f95-lang.c:204