diff options
author | Jakub Jelinek <jakub@redhat.com> | 2016-11-16 19:19:09 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2016-11-16 19:19:09 +0100 |
commit | 5e8d7713becd848449a35231d58b8b0965467784 (patch) | |
tree | 62a575ab35330c44e40658247c65b0cf700c4754 | |
parent | dd784916f5a7bd522e8b27f274a3e9a6d14d892f (diff) | |
download | gcc-5e8d7713becd848449a35231d58b8b0965467784.zip gcc-5e8d7713becd848449a35231d58b8b0965467784.tar.gz gcc-5e8d7713becd848449a35231d58b8b0965467784.tar.bz2 |
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
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/omp-low.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/gomp/pr78299.f90 | 55 |
4 files changed, 67 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a5290ba..5d90c17 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 diff --git a/gcc/omp-low.c b/gcc/omp-low.c index 331da6a..7c58c03 100644 --- a/gcc/omp-low.c +++ b/gcc/omp-low.c @@ -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); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 3f8831e..e095a40 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -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. diff --git a/gcc/testsuite/gfortran.dg/gomp/pr78299.f90 b/gcc/testsuite/gfortran.dg/gomp/pr78299.f90 new file mode 100644 index 0000000..d791e5a --- /dev/null +++ b/gcc/testsuite/gfortran.dg/gomp/pr78299.f90 @@ -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 |