aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/fortran/ChangeLog4
-rw-r--r--gcc/fortran/trans-openmp.c4
-rw-r--r--gcc/testsuite/ChangeLog3
-rw-r--r--gcc/testsuite/gfortran.dg/gomp/pr45597.f9022
4 files changed, 31 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 1f38eec..700fe91 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,5 +1,9 @@
2010-09-08 Jakub Jelinek <jakub@redhat.com>
+ PR fortran/45597
+ * trans-openmp.c (gfc_trans_omp_do): Store exit/cycle labels on code
+ instead of code->block.
+
PR fortran/45595
* openmp.c (resolve_omp_do): Report not enough do loops for
collapse even if block->next is NULL.
diff --git a/gcc/fortran/trans-openmp.c b/gcc/fortran/trans-openmp.c
index d1638b6..9c6da71 100644
--- a/gcc/fortran/trans-openmp.c
+++ b/gcc/fortran/trans-openmp.c
@@ -1386,8 +1386,8 @@ gfc_trans_omp_do (gfc_code *code, stmtblock_t *pblock,
/* Put these labels where they can be found later. */
- code->block->cycle_label = cycle_label;
- code->block->exit_label = NULL_TREE;
+ code->cycle_label = cycle_label;
+ code->exit_label = NULL_TREE;
/* Main loop body. */
tmp = gfc_trans_omp_code (code->block->next, true);
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 2bf1034..e5c116a 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,5 +1,8 @@
2010-09-08 Jakub Jelinek <jakub@redhat.com>
+ PR fortran/45597
+ * gfortran.dg/gomp/pr45597.f90: New test.
+
PR fortran/45595
* gfortran.dg/gomp/pr45595.f90: New test.
diff --git a/gcc/testsuite/gfortran.dg/gomp/pr45597.f90 b/gcc/testsuite/gfortran.dg/gomp/pr45597.f90
new file mode 100644
index 0000000..6d6a65d
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/gomp/pr45597.f90
@@ -0,0 +1,22 @@
+! PR fortran/45597
+! { dg-do compile }
+! { dg-options "-fopenmp" }
+
+subroutine foo(n)
+ integer :: i, n(6)
+ !$omp parallel do default(none) shared(n)
+ do i = 1, 6
+ if (n(i).gt.0) cycle
+ end do
+end subroutine
+subroutine bar(n)
+ integer :: i, j, k, n(6, 6, 6)
+ !$omp parallel do default(none) shared(n) collapse(3)
+ do i = 1, 6
+ do j = 1, 6
+ do k = 1, 6
+ if (n(i, j, k).gt.0) cycle
+ end do
+ end do
+ end do
+end subroutine