http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53298

             Bug #: 53298
           Summary: ICE in gfc_conv_scalarized_array_ref for ARRAY +
                    substring
    Classification: Unclassified
           Product: gcc
           Version: 4.8.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: fortran
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: bur...@gcc.gnu.org
            Blocks: 45424


The following program segfaults. The problem is the expression
   array(:)(1:)
           ^^^--<-- substring

This combination is seemingly not handled by gfc_conv_expr_descriptor.

At the end, one gets a segfault for:
  gfc_conv_scalarized_array_ref (se=0x7fffffffcfe0, ar=0x1700538)
      at fortran/trans-array.c:3016
  3016      expr = ss->info->expr;

which is called via gfc_conv_array_ref <<< gfc_conv_variable <<<
gfc_conv_string_length <<< get_array_charlen <<< gfc_conv_expr_descriptor.


  character(len=5) :: str(3)
  call f(str(:))
contains
  subroutine f(x)
   character(len=*) :: x(:)
   logical :: llll
   print *, size(x(:)(1:))
  end subroutine f
end


The program compiles flawlessly with NAG f95 and prints "3".  It fails with GCC
4.1.2, 4.3.4, 4.8.0 and probably all other versions.

Reply via email to