From d6ce1997138e6d64599cd7cf9c4eeec3bbf9c6be Mon Sep 17 00:00:00 2001 From: jakub Date: Wed, 8 Sep 2010 16:46:13 +0000 Subject: [PATCH] PR fortran/45595 * 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 | 6 ++++++ gcc/fortran/openmp.c | 3 ++- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/gfortran.dg/gomp/pr45595.f90 | 10 ++++++++++ 4 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/gfortran.dg/gomp/pr45595.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 2215eb850de..1f38eec0542 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2010-09-08 Jakub Jelinek + + 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 PR fortran/45576 diff --git a/gcc/fortran/openmp.c b/gcc/fortran/openmp.c index 0e25bf48cb3..6e8182118ce 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 1b75a3bde2b..2bf10344e94 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-09-08 Jakub Jelinek + + PR fortran/45595 + * gfortran.dg/gomp/pr45595.f90: New test. + 2010-09-08 Michael Matz * 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 00000000000..ab10c3f952e --- /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 -- 2.11.0