]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
backport: re PR fortran/91944 (ICE in gfc_conv_array_initializer, at fortran/trans...
authorJakub Jelinek <jakub@redhat.com>
Fri, 20 Dec 2019 17:25:39 +0000 (18:25 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Fri, 20 Dec 2019 17:25:39 +0000 (18:25 +0100)
Backported from mainline
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.

* gfortran.dg/spread_size_limit_2.f90: New test.

From-SVN: r279660

gcc/fortran/ChangeLog
gcc/fortran/simplify.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/spread_size_limit_2.f90 [new file with mode: 0644]

index 6f9baa48a8f812bdf14d1e0266df5294f0ed2407..06d23432503925a9a9a7039faa05d6b21685f118 100644 (file)
@@ -1,3 +1,12 @@
+2019-12-20  Jakub Jelinek  <jakub@redhat.com>
+
+       Backported from mainline
+       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-12-12  Harald Anlauf  <anlauf@gmx.de>
 
        Backport from mainline
index 583a1c136e2b6267bb9f3b67ed3164fbdb73900a..e26027edfae31408ad931d25455cb811a6a56275 100644 (file)
@@ -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 "
index 22a9462d32c8ed93bbe169a924d5e9199f35b5c3..b10c2e057690eee014b2555ee2f0e6b8003f807d 100644 (file)
@@ -3,6 +3,9 @@
        Backported from mainline
        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 (file)
index 0000000..3ea064e
--- /dev/null
@@ -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