diff options
author | Jakub Jelinek <jakub@redhat.com> | 2010-09-08 18:47:16 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2010-09-08 18:47:16 +0200 |
commit | 7602cb87c64a8e66be536194c5f0747d2f1a38fa (patch) | |
tree | 1e79a1491163962860209681965c2843a7072bd1 /gcc | |
parent | 9c2934f4d9e90c10d9209b47d0da2221718083d9 (diff) | |
download | gcc-7602cb87c64a8e66be536194c5f0747d2f1a38fa.zip gcc-7602cb87c64a8e66be536194c5f0747d2f1a38fa.tar.gz gcc-7602cb87c64a8e66be536194c5f0747d2f1a38fa.tar.bz2 |
re PR fortran/45597 (ICE: in gfc_trans_cycle, at fortran/trans-stmt.c:4320)
PR fortran/45597
* trans-openmp.c (gfc_trans_omp_do): Store exit/cycle labels on code
instead of code->block.
* gfortran.dg/gomp/pr45597.f90: New test.
From-SVN: r164005
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/fortran/trans-openmp.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/gomp/pr45597.f90 | 22 |
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 |