[Bug fortran/68426] New: Simplification of SPREAD with a derived type element causes ICE
kargl at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Nov 18 23:53:00 GMT 2015
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68426
Bug ID: 68426
Summary: Simplification of SPREAD with a derived type element
causes ICE
Product: gcc
Version: 6.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
Assignee: unassigned at gcc dot gnu.org
Reporter: kargl at gcc dot gnu.org
Target Milestone: ---
In fixing PR 59910, I mentioned that the patch may not
fix a potential problem with similar code in a PARAMETER.
Dominiq posted
module m
implicit none
type t
integer :: i
end type t
type(t), dimension(2), parameter :: a1 = (/ t(1), t(2) /)
type(t), dimension(1), parameter :: c = spread ( a1(1), 1, 1 )
end module m
which indeed leads to an ICE
f951: internal compiler error: in gfc_conv_array_initializer, at
fortran/trans-array.c:5704
The problem is that gfc_simplify_spread bails out because
soource->expr_type == EXPR_STRUCTURE and SPREAD is not
simplified. This then generates a function and
gfc_conv_array_initializer gets expr->expt_type==EXPR_FUNCTION
which she can't deal with.
The fix lies in gfc_simplify_spread.
More information about the Gcc-bugs
mailing list