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
This commit is contained in:
Jakub Jelinek 2010-09-08 18:47:16 +02:00 committed by Jakub Jelinek
parent 9c2934f4d9
commit 7602cb87c6
4 changed files with 31 additions and 2 deletions

View File

@ -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.

View File

@ -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);

View File

@ -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.

View File

@ -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