This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug fortran/53298] New: ICE in gfc_conv_scalarized_array_ref for ARRAY + substring
- From: "burnus at gcc dot gnu.org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: Wed, 09 May 2012 17:11:03 +0000
- Subject: [Bug fortran/53298] New: ICE in gfc_conv_scalarized_array_ref for ARRAY + substring
- Auto-submitted: auto-generated
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: unassigned@gcc.gnu.org
ReportedBy: burnus@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.