aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2019-11-27 10:00:50 +0000
committerJakub Jelinek <jakub@redhat.com>2019-11-27 10:00:50 +0000
commite025fe37b3e265a369a2899e5446f9efec0e6de1 (patch)
tree96855a9fa85e06eb3327be7b2fffe6989e3b7409
parent6aef9e93bc2eca219aed6cf052cbf559905af670 (diff)
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. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@278762 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/simplify.c2
-rw-r--r--gcc/testsuite/ChangeLog3
-rw-r--r--gcc/testsuite/gfortran.dg/spread_size_limit_2.f9011
4 files changed, 21 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 25252501b19..4cf6e9e3d1a 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,9 @@
+2019-11-27 Jakub Jelinek <jakub@redhat.com>
+
+ 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-11-27 Tobias Burnus <tobias@codesourcery.com>
PR middle-end/92463
diff --git a/gcc/fortran/simplify.c b/gcc/fortran/simplify.c
index b02c549ecff..93f3da38af6 100644
--- a/gcc/fortran/simplify.c
+++ b/gcc/fortran/simplify.c
@@ -7656,7 +7656,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 ab455910c4d..92d6855694b 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,8 @@
2019-11-27 Jakub Jelinek <jakub@redhat.com>
+ 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 00000000000..3ea064e267f
--- /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