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

            Bug ID: 102620
           Summary: [12 Regression] ICE in gfc_get_array_span, at
                    fortran/trans-array.c:865
           Product: gcc
           Version: 12.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: fortran
          Assignee: unassigned at gcc dot gnu.org
          Reporter: gs...@t-online.de
  Target Milestone: ---

The result of len(c) or c%len is always a scalar.
It can't be an argument of size(x) where x must be an array.
Issue started between 20210530 and 20210606 :


$ cat z1.f90
program p
   character(3), allocatable :: y(:)
   y = ['abc', 'xyz']
   call s(y)
contains
   subroutine s(x)
      character(*) :: x(:)
      integer :: i
      print *, [(len_trim(x(i)), i=1,size(x%len))]
   end
end


$ cat z1b.f90
program p
   character(:), allocatable :: y(:)
   y = ['abc', 'xyz']
   call s(y)
contains
   subroutine s(x)
      character(*) :: x(:)
      integer :: i
      print *, [(len_trim(x(i)), i=1,size(x%len))]
   end
end


$ gfortran-12-20210530 -c z1.f90
$
$ gfortran-12-20211003 -c z1.f90
z1.f90:9:50:

    9 |       print *, [(len_trim(x(i)), i=1,size(x%len))]
      |                                                  1
internal compiler error: in gfc_get_array_span, at fortran/trans-array.c:865
0x84d8aa gfc_get_array_span(tree_node*, gfc_expr*)
        ../../gcc/fortran/trans-array.c:865
0x8597c0 gfc_conv_expr_descriptor(gfc_se*, gfc_expr*)
        ../../gcc/fortran/trans-array.c:7739
0x88ce8f gfc_conv_intrinsic_size
        ../../gcc/fortran/trans-intrinsic.c:8064
0x8a488a gfc_conv_intrinsic_function(gfc_se*, gfc_expr*)
        ../../gcc/fortran/trans-intrinsic.c:10718
0x87956a gfc_conv_expr(gfc_se*, gfc_expr*)
        ../../gcc/fortran/trans-expr.c:9066
0x87c443 gfc_conv_expr_val(gfc_se*, gfc_expr*)
        ../../gcc/fortran/trans-expr.c:9119
0x857580 gfc_trans_array_constructor_value
        ../../gcc/fortran/trans-array.c:1942
0x85892a trans_array_constructor
        ../../gcc/fortran/trans-array.c:2769
0x85892a gfc_add_loop_ss_code
        ../../gcc/fortran/trans-array.c:3049
0x858ff5 gfc_conv_loop_setup(gfc_loopinfo*, locus*)
        ../../gcc/fortran/trans-array.c:5293
0x8aa9e5 gfc_trans_transfer(gfc_code*)
        ../../gcc/fortran/trans-io.c:2646
0x84aee7 trans_code
        ../../gcc/fortran/trans.c:2138
0x8a836e build_dt
        ../../gcc/fortran/trans-io.c:2026
0x84aec7 trans_code
        ../../gcc/fortran/trans.c:2110
0x871974 gfc_generate_function_code(gfc_namespace*)
        ../../gcc/fortran/trans-decl.c:6905
0x871774 gfc_generate_contained_functions
        ../../gcc/fortran/trans-decl.c:5899
0x871774 gfc_generate_function_code(gfc_namespace*)
        ../../gcc/fortran/trans-decl.c:6837
0x7f77b6 translate_all_program_units
        ../../gcc/fortran/parse.c:6572
0x7f77b6 gfc_parse_file()
        ../../gcc/fortran/parse.c:6841
0x843f3f gfc_be_parse_file
        ../../gcc/fortran/f95-lang.c:216

Reply via email to