PR fortran/45595
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 8 Sep 2010 16:46:13 +0000 (16:46 +0000)
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 8 Sep 2010 16:46:13 +0000 (16:46 +0000)
* openmp.c (resolve_omp_do): Report not enough do loops for
collapse even if block->next is NULL.

* gfortran.dg/gomp/pr45595.f90: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@164004 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/fortran/ChangeLog
gcc/fortran/openmp.c
gcc/testsuite/ChangeLog
gcc/testsuite/gfortran.dg/gomp/pr45595.f90 [new file with mode: 0644]

index 2215eb8..1f38eec 100644 (file)
@@ -1,3 +1,9 @@
+2010-09-08  Jakub Jelinek  <jakub@redhat.com>
+
+       PR fortran/45595
+       * openmp.c (resolve_omp_do): Report not enough do loops for
+       collapse even if block->next is NULL.
+
 2010-09-07  Thomas Koenig  <tkoenig@gcc.gnu.org>
 
        PR fortran/45576
index 0e25bf4..6e81821 100644 (file)
@@ -1516,7 +1516,8 @@ resolve_omp_do (gfc_code *code)
          break;
        }
       do_code = do_code->next;
-      if (do_code->op != EXEC_DO && do_code->op != EXEC_DO_WHILE)
+      if (do_code == NULL
+         || (do_code->op != EXEC_DO && do_code->op != EXEC_DO_WHILE))
        {
          gfc_error ("not enough DO loops for collapsed !$OMP DO at %L",
                     &code->loc);
index 1b75a3b..2bf1034 100644 (file)
@@ -1,3 +1,8 @@
+2010-09-08  Jakub Jelinek  <jakub@redhat.com>
+
+       PR fortran/45595
+       * gfortran.dg/gomp/pr45595.f90: New test.
+
 2010-09-08  Michael Matz  <matz@suse.de>
 
        * c-c++-common/uninit-17.c: Adjust.
diff --git a/gcc/testsuite/gfortran.dg/gomp/pr45595.f90 b/gcc/testsuite/gfortran.dg/gomp/pr45595.f90
new file mode 100644 (file)
index 0000000..ab10c3f
--- /dev/null
@@ -0,0 +1,10 @@
+! PR fortran/45595
+! { dg-do compile }
+! { dg-options "-fopenmp" }
+
+subroutine foo(l,u)
+  integer :: k,l,u
+  !$omp parallel do shared(l,u) collapse(3)    ! { dg-error "not enough DO loops" }
+    do k = l,u
+    end do
+end subroutine