diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ca8d69a9c5c..b97384aa2ac 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2010-01-26 Jakub Jelinek + + PR fortran/42866 + * omp-low.c (expand_omp_sections): Only use single_pred if + l2_bb is single_pred_p. + 2010-01-25 Christian Bruel PR target/42841 diff --git a/gcc/omp-low.c b/gcc/omp-low.c index 317003186d1..bb1a86a6648 100644 --- a/gcc/omp-low.c +++ b/gcc/omp-low.c @@ -4663,7 +4663,7 @@ expand_omp_sections (struct omp_region *region) l2_bb = region->exit; if (exit_reachable) { - if (single_pred (l2_bb) == l0_bb) + if (single_pred_p (l2_bb) && single_pred (l2_bb) == l0_bb) l2 = gimple_block_label (l2_bb); else { diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index a20b4976aad..4b20087ff71 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,3 +1,8 @@ +2010-01-26 Jakub Jelinek + + PR fortran/42866 + * testsuite/libgomp.fortran/allocatable5.f90: New test. + 2010-01-20 Paolo Bonzini * configure.ac: Test for executability of GFORTRAN. diff --git a/libgomp/testsuite/libgomp.fortran/allocatable5.f90 b/libgomp/testsuite/libgomp.fortran/allocatable5.f90 new file mode 100644 index 00000000000..41809302413 --- /dev/null +++ b/libgomp/testsuite/libgomp.fortran/allocatable5.f90 @@ -0,0 +1,17 @@ +! PR fortran/42866 +! { dg-do run } + +program pr42866 + integer, allocatable :: a(:) + allocate (a(16)) + a = 0 + !$omp parallel + !$omp sections reduction(+:a) + a = a + 1 + !$omp section + a = a + 2 + !$omp end sections + !$omp end parallel + if (any (a.ne.3)) call abort + deallocate (a) +end