]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
match.c (match_forall_iterator): Don't immediately give error if '=' is not followed...
authorTobias Schlüter <tobias.schlueter@physik.uni-muenchen.de>
Sat, 4 Jun 2005 10:35:00 +0000 (12:35 +0200)
committerTobias Schlüter <tobi@gcc.gnu.org>
Sat, 4 Jun 2005 10:35:00 +0000 (12:35 +0200)
fortran/
* match.c (match_forall_iterator): Don't immediately give error if '='
is not followed by an expression.
testsuite/
* gfortran.dg/forall_1.f90: New test.

Co-Authored-By: Erik Edelmann <erik.edelmann@iki.fi>
From-SVN: r100580

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

index bc0fa79d7de78b0352e8549fcf11b02e565c0c07..bc8c7b495f7790a2b85a131da32b8cfb4ee5d82a 100644 (file)
@@ -1,4 +1,9 @@
-2005-06-03  Tobias Schl"uter  <tobias.schlueter@physik.uni-muenchen.de>
+2005-06-04  Tobias Schl"uter  <tobias.schlueter@physik.uni-muenchen.de>
+
+       * match.c (match_forall_iterator): Don't immediately give error if '='
+       is not followed by an expression.
+
+2005-06-04  Tobias Schl"uter  <tobias.schlueter@physik.uni-muenchen.de>
        Erik Edelmann  <erik.edelmann@iki.fi>
 
        * array.c (gfc_match_array_constructor): Disallow empty array
index 741e1a306070ebb6933346102112b04e97566e5e..0592b1e974ba48c40148e772705c0c3a7e1e623e 100644 (file)
@@ -3084,9 +3084,7 @@ match_forall_iterator (gfc_forall_iterator ** result)
     }
 
   m = gfc_match_expr (&iter->start);
-  if (m == MATCH_NO)
-    goto syntax;
-  if (m == MATCH_ERROR)
+  if (m != MATCH_YES)
     goto cleanup;
 
   if (gfc_match_char (':') != MATCH_YES)
index acbdca22ea264529bf6c7b2771c79ab7a7ee36a5..db1bea636287870d11de171e0e931782959dd4d3 100644 (file)
@@ -1,3 +1,7 @@
+2005-06-04  Tobias Schl"uter  <tobias.schlueter@physik.uni-muenchen.de>
+
+       * gfortran.dg/forall_1.f90: New test.
+
 2005-06-04  Erik Edelmann  <erik.edelmann@iki.fi>
 
        * gfortran.dg/array_constructor_3.f90: New test.
diff --git a/gcc/testsuite/gfortran.dg/forall_1.f90 b/gcc/testsuite/gfortran.dg/forall_1.f90
new file mode 100644 (file)
index 0000000..f657dcb
--- /dev/null
@@ -0,0 +1,27 @@
+! { dg-do run }
+! tests FORALL statements with a mask
+dimension i2(15,10), i1(15)
+type a
+   sequence
+   integer k
+end type a
+type(a) :: a1(10), a2(5,5)
+
+forall (i=1:15, i1(i) /= 0)
+   i1(i) = 0
+end forall
+if (any(i1 /= 0)) call abort
+
+a1(:)%k = i1(1:10)
+forall (i=1:10, a1(i)%k == 0)
+   a1(i)%k = i
+end forall
+if (any (a1(:)%k /= (/ (i, i=1,10) /))) call abort
+
+forall (i=1:15, j=1:10, a1(j)%k <= j)
+   i2(i,j) = j + i*11
+end forall
+do i=1,15
+   if (any (i2(i,:) /= (/ (i*11 + j, j=1,10) /))) call abort
+end do
+end