aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/fortran/ChangeLog6
-rw-r--r--gcc/fortran/openmp.c3
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gfortran.dg/gomp/pr45595.f9010
4 files changed, 23 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 2215eb8..1f38eec 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -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
diff --git a/gcc/fortran/openmp.c b/gcc/fortran/openmp.c
index 0e25bf4..6e81821 100644
--- a/gcc/fortran/openmp.c
+++ b/gcc/fortran/openmp.c
@@ -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);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 1b75a3b..2bf1034 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
index 0000000..ab10c3f
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/gomp/pr45595.f90
@@ -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