]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
re PR fortran/56007 (Remarkably bad error message with DO array=1,2)
authorHarald Anlauf <anlauf@gmx.de>
Sun, 28 Feb 2016 19:07:42 +0000 (19:07 +0000)
committerJerry DeLisle <jvdelisle@gcc.gnu.org>
Sun, 28 Feb 2016 19:07:42 +0000 (19:07 +0000)
2016-02-28  Harald Anlauf <anlauf@gmx.de>
    Jerry DeLisle  <jvdelisle@gcc.gnu.org>

PR fortran/56007
* match.c (gfc_match_iterator): Add diagnostic for array variable
as do loop index.

* gfortran.dg/coarray_8.f90: Adjust error message.
* gfortran.dg/pr56007.f90: New test.
* gfortran.dg/pr56007.f: New test.

Co-Authored-By: Jerry DeLisle <jvdelisle@gcc.gnu.org>
From-SVN: r233795

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

index c460a7eb70a8aa763a7fc36a8c99cb013dda3bce..56f2bdde04a7fd0a1e0e23cec5fc0ddcaa3b9c88 100644 (file)
@@ -1,3 +1,10 @@
+2016-02-28  Harald Anlauf <anlauf@gmx.de>
+           Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+       PR fortran/56007
+       * match.c (gfc_match_iterator): Add diagnostic for array variable
+       as do loop index.
+
 2016-02-27  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
            Steven G. Kargl  <kargl@gcc.gnu.org>
 
index ef41781105b043bc154e64a663fb9d2f7cb5ff6a..2490f85626e7ccc01707d4600e1bb7be021fb3a1 100644 (file)
@@ -877,6 +877,12 @@ gfc_match_iterator (gfc_iterator *iter, int init_flag)
   if (m != MATCH_YES)
     return MATCH_NO;
 
+  if (var->symtree->n.sym->attr.dimension)
+    {
+      gfc_error ("Loop variable at %C cannot be an array");
+      goto cleanup;
+    }
+
   /* F2008, C617 & C565.  */
   if (var->symtree->n.sym->attr.codimension)
     {
index e7ad0db2c29fba90a1ada7addfcfb6ff38b48b61..6dcb331345231f82d2df389e577c8e892ece84e9 100644 (file)
@@ -1,3 +1,11 @@
+2016-02-28  Harald Anlauf <anlauf@gmx.de>
+           Jerry DeLisle  <jvdelisle@gcc.gnu.org>
+
+       PR fortran/56007
+       * gfortran.dg/coarray_8.f90: Adjust error message.
+       * gfortran.dg/pr56007.f90: New test.
+       * gfortran.dg/pr56007.f: New test.
+
 2016-02-28  H.J. Lu  <hongjiu.lu@intel.com>
 
        PR tree-optimization/69989
index 91d6e9a57abc71ecb05006ad483923577930df1d..db6eb6c2e2d86be49f09b7b34f90ef70d8b5776a 100644 (file)
@@ -146,7 +146,7 @@ end module mmm4
 subroutine tfgh()
   integer :: i(2)
   DATA i/(i, i=1,2)/ ! { dg-error "Expected PARAMETER symbol" }
-  do i = 1, 5 ! { dg-error "cannot be a sub-component" }
+  do i = 1, 5 ! { dg-error "cannot be an array" }
   end do ! { dg-error "Expecting END SUBROUTINE" }
 end subroutine tfgh
 
diff --git a/gcc/testsuite/gfortran.dg/pr56007.f b/gcc/testsuite/gfortran.dg/pr56007.f
new file mode 100644 (file)
index 0000000..644f28e
--- /dev/null
@@ -0,0 +1,10 @@
+! { dg-do compile }
+! PR fortran/56007
+! Based on testcase by Tobias Schlüter
+
+      integer iw1(90), doiw1(90)
+      do iw1(1)=1
+      do iw1=1
+      do iw1=1,2    ! { dg-error "cannot be an array" }
+      end do        ! { dg-error "Expecting END PROGRAM statement" }
+      END
diff --git a/gcc/testsuite/gfortran.dg/pr56007.f90 b/gcc/testsuite/gfortran.dg/pr56007.f90
new file mode 100644 (file)
index 0000000..b91baf5
--- /dev/null
@@ -0,0 +1,11 @@
+! { dg-do compile }
+! PR fortran/56007
+! Based on testcase by Tobias Schlüter
+
+  integer iw1(90), doiw1(90)
+  do iw1=1,2     ! { dg-error "cannot be an array" }
+  end do         ! { dg-error "Expecting END PROGRAM statement" }
+  do iw1(1)=1    ! { dg-error "Unclassifiable statement" }
+  do iw1=1       ! { dg-error "cannot be an array" }
+  end do         ! { dg-error "Expecting END PROGRAM statement" }
+END program