re PR fortran/78299 (ICE in expand_omp_for_static_nochunk, at omp-low.c:9622)

PR fortran/78299
	* omp-low.c (expand_omp_for_static_nochunk): Don't assert
	that loop->header == body_bb if broken_loop.

	* gfortran.dg/gomp/pr78299.f90: New test.

From-SVN: r242507
This commit is contained in:
Jakub Jelinek 2016-11-16 19:19:09 +01:00 committed by Jakub Jelinek
parent dd784916f5
commit 5e8d7713be
4 changed files with 67 additions and 1 deletions

View file

@ -1,3 +1,9 @@
2016-11-16 Jakub Jelinek <jakub@redhat.com>
PR fortran/78299
* omp-low.c (expand_omp_for_static_nochunk): Don't assert
that loop->header == body_bb if broken_loop.
2015-11-16 Wilco Dijkstra <wdijkstr@arm.com>
* tree-ssa-math-opts.c (bswap_replace): Remove test

View file

@ -9685,7 +9685,7 @@ expand_omp_for_static_nochunk (struct omp_region *region,
struct loop *loop = body_bb->loop_father;
if (loop != entry_bb->loop_father)
{
gcc_assert (loop->header == body_bb);
gcc_assert (broken_loop || loop->header == body_bb);
gcc_assert (broken_loop
|| loop->latch == region->cont
|| single_pred (loop->latch) == region->cont);

View file

@ -1,3 +1,8 @@
2016-11-16 Jakub Jelinek <jakub@redhat.com>
PR fortran/78299
* gfortran.dg/gomp/pr78299.f90: New test.
2015-11-16 Wilco Dijkstra <wdijkstr@arm.com>
* gcc.dg/optimize-bswapdi-3.c: Remove xfail.

View file

@ -0,0 +1,55 @@
! PR fortran/78299
! { dg-do compile }
! { dg-additional-options "-fcheck=bounds" }
program pr78299
integer, parameter :: n = 8
integer :: i, j
real :: x(n), y(n)
x = 1.0
y = 2.0
do j = 1, 9
!$omp parallel workshare
!$omp parallel default(shared)
!$omp do
do i = 1, n
x(i) = x(i) * y(9) ! { dg-warning "is out of bounds" }
end do
!$omp end do
!$omp end parallel
!$omp end parallel workshare
end do
do j = 1, 9
!$omp parallel workshare
!$omp parallel default(shared)
!$omp do schedule(static)
do i = 1, n
x(i) = x(i) * y(9) ! { dg-warning "is out of bounds" }
end do
!$omp end do
!$omp end parallel
!$omp end parallel workshare
end do
do j = 1, 9
!$omp parallel workshare
!$omp parallel default(shared)
!$omp do schedule(static, 2)
do i = 1, n
x(i) = x(i) * y(9) ! { dg-warning "is out of bounds" }
end do
!$omp end do
!$omp end parallel
!$omp end parallel workshare
end do
do j = 1, 9
!$omp parallel workshare
!$omp parallel default(shared)
!$omp do schedule(dynamic, 3)
do i = 1, n
x(i) = x(i) * y(9) ! { dg-warning "is out of bounds" }
end do
!$omp end do
!$omp end parallel
!$omp end parallel workshare
end do
end