re PR fortran/90563 (Out of bounds error when compiling with -Wextra)
authorThomas Koenig <tkoenig@gcc.gnu.org>
Tue, 13 Aug 2019 18:43:00 +0000 (18:43 +0000)
committerThomas Koenig <tkoenig@gcc.gnu.org>
Tue, 13 Aug 2019 18:43:00 +0000 (18:43 +0000)
2013-08-13  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/90563
* frontend-passes.c (insert_index): Suppress errors while
simplifying the resulting expression.

2013-08-13  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/90563
* gfortran.dg/do_subsript_5.f90: New test.

From-SVN: r274394

gcc/fortran/ChangeLog
gcc/fortran/frontend-passes.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/do_subscript_5.f90 [new file with mode: 0644]

index 6a908eb88a0fcfc4b162df87cef734d4c4ddb45d..08908d26d92bf38fdd03e4edf8249a1dcf951515 100644 (file)
@@ -1,7 +1,13 @@
+2013-08-13  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+       PR fortran/90563
+       * frontend-passes.c (insert_index): Suppress errors while
+       simplifying the resulting expression.
+
 2019-08-13  Steven G. Kargl  <kargl@gcc.gnu.org>
 
        PR fortran/89647
-       resolve.c (resolve_typebound_procedure): Allow host associated 
+       resolve.c (resolve_typebound_procedure): Allow host associated
        procedure to be a binding target.  While here, wrap long line.
 
 2019-08-13  Steven G. Kargl  <kargl@gcc.gnu.org>
index 37c767f96f28422c830c23b7074531f499c58a87..be99a06c3fcb27f41ba683a09a32cde0811cfe11 100644 (file)
@@ -2518,7 +2518,12 @@ insert_index (gfc_expr *e, gfc_symbol *sym, mpz_t val, mpz_t ret)
   data.sym = sym;
   mpz_init_set (data.val, val);
   gfc_expr_walker (&n, callback_insert_index, (void *) &data);
+
+  /* Suppress errors here - we could get errors here such as an
+     out of bounds access for arrays, see PR 90563.  */
+  gfc_push_suppress_errors ();
   gfc_simplify_expr (n, 0);
+  gfc_pop_suppress_errors ();
 
   if (n->expr_type == EXPR_CONSTANT)
     {
index e7ec05b55bcb104df165b39db40e920dd2ef7520..4514664a751f99503cec0d78334992aade4d29e5 100644 (file)
@@ -1,3 +1,8 @@
+2013-08-13  Thomas Koenig  <tkoenig@gcc.gnu.org>
+
+       PR fortran/90563
+       * gfortran.dg/do_subsript_5.f90: New test.
+
 2019-08-13  Steven G. Kargl  <kargl@gcc.gnu.org>
 
        PR fortran/89647
@@ -22,7 +27,7 @@
 
        * gnat.dg/casesi.ad[bs], test_casesi.adb: New test.
 
-2019-08-13  Wilco Dijkstra  <wdijkstr@arm.com>  
+2019-08-13  Wilco Dijkstra  <wdijkstr@arm.com>
 
        PR target/81800
        * gcc.target/aarch64/no-inline-lrint_3.c: New test.
diff --git a/gcc/testsuite/gfortran.dg/do_subscript_5.f90 b/gcc/testsuite/gfortran.dg/do_subscript_5.f90
new file mode 100644 (file)
index 0000000..29fefbc
--- /dev/null
@@ -0,0 +1,17 @@
+! { dg-do compile }
+! PR 90563 - this used to be rejected, wrongly
+! Original test case by Tobias Neumann
+program test
+      implicit none
+      integer, parameter :: swap(4) = [2,1,3,4]
+      real :: p(20)
+      integer :: j
+
+      p = 0.0
+
+      do j=1,6
+          if (j<5) then
+              p(j) = p(swap(j))
+          endif
+      enddo
+end program