On Tue, Nov 17, 2015 at 04:36:01PM -0800, Steve Kargl wrote: > On Wed, Nov 18, 2015 at 12:24:29AM +0100, Dominique d'Humières wrote: > > > ??? but I suspect gfc_reduce_init_expr() > > > may be useful for PARAMETER statements as well (need to > > > check this!). > > > > As in the following test > > > > 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 > > > > Yep. We again arrive at gfc_conv_array_initializer with > expr->expr_type == EXPR_FUNCTION, which isn't handled correctly. > > The issue seems deeply rooted in the handling of derived types, > which is actually worse than this! But, that is definitely for > another day. See PR67817. :( >
Ugh. gfc_simplify_spread does not actually the use of SPREAD here, because source->expr_type == EXPR_STRUCTURE which is not handled. -- Steve