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

--- Comment #2 from kargl at gcc dot gnu.org ---
(In reply to G. Steinmetz from comment #0)
> With invalid code for versions 8/9, silently accepted with 5/6/7  :
> 
> 
> $ cat z1.f90
> program p
>    print *, [integer :: 1, [integer(8) :: 2, ['3']]]
> end
> 
> 
> $ gfortran-9-20181118 -c z1.f90
> f951: internal compiler error: gfc_convert_constant(): Unexpected type
> 0x61a501 gfc_internal_error(char const*, ...)
>         ../../gcc/fortran/error.c:1363
> 0x6a759c gfc_convert_constant(gfc_expr*, bt, int)
>         ../../gcc/fortran/simplify.c:8363
> 0x6a761a gfc_convert_constant(gfc_expr*, bt, int)
>         ../../gcc/fortran/simplify.c:8396
> 0x62d3cb do_simplify
>         ../../gcc/fortran/intrinsic.c:4475
> 0x638452 gfc_convert_type_warn(gfc_expr*, gfc_typespec*, int, int)
>         ../../gcc/fortran/intrinsic.c:5148
> 0x5ece92 gfc_match_array_constructor(gfc_expr**)
>         ../../gcc/fortran/array.c:1249
> 0x650479 match_primary
>         ../../gcc/fortran/matchexp.c:153
> 0x650479 match_level_1
>         ../../gcc/fortran/matchexp.c:211
> 0x650479 match_mult_operand
>         ../../gcc/fortran/matchexp.c:267
> 0x6506d8 match_add_operand
>         ../../gcc/fortran/matchexp.c:356
> 0x65092c match_level_2
>         ../../gcc/fortran/matchexp.c:480
> 0x650a82 match_level_3
>         ../../gcc/fortran/matchexp.c:551
> 0x650b74 match_level_4
>         ../../gcc/fortran/matchexp.c:599
> 0x650b74 match_and_operand
>         ../../gcc/fortran/matchexp.c:693
> 0x650d62 match_or_operand
>         ../../gcc/fortran/matchexp.c:722
> 0x650e32 match_equiv_operand
>         ../../gcc/fortran/matchexp.c:765
> 0x650f04 match_level_5
>         ../../gcc/fortran/matchexp.c:811
> 0x6502e1 gfc_match_expr(gfc_expr**)
>         ../../gcc/fortran/matchexp.c:870
> 0x638e23 match_io_element
>         ../../gcc/fortran/io.c:3587
> 0x63b795 match_io_list
>         ../../gcc/fortran/io.c:3626

Index: gcc/fortran/simplify.c
===================================================================
--- gcc/fortran/simplify.c      (revision 266281)
+++ gcc/fortran/simplify.c      (working copy)
@@ -8360,7 +8360,7 @@ gfc_convert_constant (gfc_expr *e, bt type, int kind)

     default:
     oops:
-      gfc_internal_error ("gfc_convert_constant(): Unexpected type");
+      return &gfc_bad_expr;
     }

   result = NULL;

%  gfcx -o z a.f90 && ./z
a.f90:3:46:

    3 |    print *, [integer :: 1, [integer(8) :: 2, ['3']]]
      |                                              1
Error: Can't convert CHARACTER(1) to INTEGER(8) at (1)

Reply via email to