From 70d8957fdc81ba73f016bfe6cd0c21ea79c35b7f Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 20 Dec 2019 18:25:39 +0100 Subject: [PATCH] backport: re PR fortran/91944 (ICE in gfc_conv_array_initializer, at fortran/trans-array.c:6156) Backported from mainline 2019-11-27 Jakub Jelinek PR fortran/91944 * simplify.c (gfc_simplify_spread): Check gfc_init_expr_flag instead of gfc_current_ns->sym_root->n.sym->attr.flavor == FL_PARAMETER. * gfortran.dg/spread_size_limit_2.f90: New test. From-SVN: r279660 --- gcc/fortran/ChangeLog | 9 +++++++++ gcc/fortran/simplify.c | 2 +- gcc/testsuite/ChangeLog | 3 +++ gcc/testsuite/gfortran.dg/spread_size_limit_2.f90 | 11 +++++++++++ 4 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gfortran.dg/spread_size_limit_2.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 6f9baa48a8f8..06d234325039 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,12 @@ +2019-12-20 Jakub Jelinek + + Backported from mainline + 2019-11-27 Jakub Jelinek + + PR fortran/91944 + * simplify.c (gfc_simplify_spread): Check gfc_init_expr_flag instead + of gfc_current_ns->sym_root->n.sym->attr.flavor == FL_PARAMETER. + 2019-12-12 Harald Anlauf Backport from mainline diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c index 583a1c136e2b..e26027edfae3 100644 --- a/gcc/fortran/simplify.c +++ b/gcc/fortran/simplify.c @@ -7672,7 +7672,7 @@ gfc_simplify_spread (gfc_expr *source, gfc_expr *dim_expr, gfc_expr *ncopies_exp nelem = mpz_get_si (size) * ncopies; if (nelem > flag_max_array_constructor) { - if (gfc_current_ns->sym_root->n.sym->attr.flavor == FL_PARAMETER) + if (gfc_init_expr_flag) { gfc_error ("The number of elements (%d) in the array constructor " "at %L requires an increase of the allowed %d upper " diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 22a9462d32c8..b10c2e057690 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -3,6 +3,9 @@ Backported from mainline 2019-11-27 Jakub Jelinek + PR fortran/91944 + * gfortran.dg/spread_size_limit_2.f90: New test. + PR c++/92524 * g++.dg/cpp0x/pr92524.C: New test. diff --git a/gcc/testsuite/gfortran.dg/spread_size_limit_2.f90 b/gcc/testsuite/gfortran.dg/spread_size_limit_2.f90 new file mode 100644 index 000000000000..3ea064e267fe --- /dev/null +++ b/gcc/testsuite/gfortran.dg/spread_size_limit_2.f90 @@ -0,0 +1,11 @@ +! PR fortran/91944 +! { dg-do compile } +! { dg-options "-fmax-array-constructor=65535" } + +program pr91944 + integer, parameter :: n = 10 + integer, parameter :: m = 65536 + integer :: i + integer :: x(n,m) = spread([(i,i=1,n)], dim=2, ncopies=m) ! { dg-error "requires an increase of the allowed 65535 upper limit" } + print *, x(n,m) +end -- 2.47.2