frontend-passes.c (do_subscript): Don't do anything if inside an associate list.
authorThomas Koenig <tkoenig@gcc.gnu.org>
Tue, 26 Sep 2017 18:32:16 +0000 (18:32 +0000)
committerThomas Koenig <tkoenig@gcc.gnu.org>
Tue, 26 Sep 2017 18:32:16 +0000 (18:32 +0000)
2017-09-26  Thomas Koenig  <tkoenig@gcc.gnu.org>

* frontend-passes.c (do_subscript): Don't do anything
if inside an associate list.

2017-09-26  Thomas Koenig  <tkoenig@gcc.gnu.org>

* gfortran.dg/gomp/associate1.f90: Remove unnecessary
warning from associate construct and do loop.

From-SVN: r253211

gcc/fortran/frontend-passes.c
gcc/testsuite/gfortran.dg/gomp/associate1.f90

index 93f2c0fa03824fef3527d6250de0477cdf2ce2f3..ae4fba63b3c885750c82811f997cf0f80ddd53f8 100644 (file)
@@ -2484,6 +2484,10 @@ do_subscript (gfc_expr **e)
   if (v->expr_type == EXPR_CONSTANT)
     return 0;
 
+  /* Wrong warnings will be generated in an associate list.  */
+  if (in_assoc_list)
+    return 0;
+
   for (ref = v->ref; ref; ref = ref->next)
     {
       if (ref->type == REF_ARRAY && ref->u.ar.type == AR_ELEMENT)
index 5412301fe8713311e2cd69b54e68704ac8fd9d12..abc5ae95a0d1c55de3fdd1c4b31af35f119cac4b 100644 (file)
@@ -14,7 +14,7 @@ program associate1
   type(dt) :: b(3)
   i = 1
   j = 2
-  associate(k => v, l => a(i, j), m => a(i, :)) ! { dg-warning "out of bounds" }
+  associate(k => v, l => a(i, j), m => a(i, :))
   associate(n => b(j)%c(:, :)%i, o => a, p => b)
 !$omp parallel shared (l)      ! { dg-error "ASSOCIATE name" }
 !$omp end parallel
@@ -75,7 +75,7 @@ program associate1
   end do
   k = 1
 !$omp simd linear (k : 2)      ! { dg-error "ASSOCIATE name" }
-  do i = 1, 10 ! { dg-warning "out of bounds" }
+  do i = 1, 10
     k = k + 2
   end do
   end associate