From e3cc08e9b5e8cfdfcf138e579b6c1d85f3b9b2df Mon Sep 17 00:00:00 2001 From: Tobias Burnus Date: Sun, 27 Feb 2011 15:29:59 +0100 Subject: [PATCH] backport: [multiple changes] 2011-01-27 Tobias Burnus Backport from mainline 2011-02-26 Tobias Burnus PR fortran/47886 * openmp.c (gfc_resolve_omp_directive): Resolve if() condition of OpenMP's task. 2011-01-27 Tobias Burnus Backport from mainline 2011-02-27 Jakub Jelinek PR fortran/47886 * testsuite/libgomp.fortran/task3.f90: New test. From-SVN: r170541 --- gcc/fortran/ChangeLog | 9 +++++++ gcc/fortran/openmp.c | 1 + libgomp/ChangeLog | 9 +++++++ libgomp/testsuite/libgomp.fortran/task3.f90 | 27 +++++++++++++++++++++ 4 files changed, 46 insertions(+) create mode 100644 libgomp/testsuite/libgomp.fortran/task3.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index a8b56da26ac2..eb9cf23bc19d 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,12 @@ +2011-01-27 Tobias Burnus + + Backport from mainline + 2011-02-26 Tobias Burnus + + PR fortran/47886 + * openmp.c (gfc_resolve_omp_directive): Resolve if() + condition of OpenMP's task. + 2011-02-19 Tobias Burnus PR fortran/47775 diff --git a/gcc/fortran/openmp.c b/gcc/fortran/openmp.c index e26535eaeb03..3fea927decd1 100644 --- a/gcc/fortran/openmp.c +++ b/gcc/fortran/openmp.c @@ -1546,6 +1546,7 @@ gfc_resolve_omp_directive (gfc_code *code, gfc_namespace *ns ATTRIBUTE_UNUSED) case EXEC_OMP_PARALLEL_SECTIONS: case EXEC_OMP_SECTIONS: case EXEC_OMP_SINGLE: + case EXEC_OMP_TASK: if (code->ext.omp_clauses) resolve_omp_clauses (code); break; diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index d9233e4440e9..c64de6d29ab4 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,3 +1,12 @@ +2011-01-27 Tobias Burnus + + Backport from mainline + 2011-02-27 Jakub Jelinek + + PR fortran/47886 + * testsuite/libgomp.fortran/task3.f90: New test. + + 2011-01-16 Jakub Jelinek Backport from mainline diff --git a/libgomp/testsuite/libgomp.fortran/task3.f90 b/libgomp/testsuite/libgomp.fortran/task3.f90 new file mode 100644 index 000000000000..30ff9803ea27 --- /dev/null +++ b/libgomp/testsuite/libgomp.fortran/task3.f90 @@ -0,0 +1,27 @@ +! { dg-do run } +! { dg-options "-fopenmp" } +! +! PR fortran/47886 +! +! Test case contributed by Bill Long + +! derived from OpenMP test OMP3f/F03_2_7_1d.F90 +program F03_2_7_1d + use omp_lib + implicit none + integer, parameter :: NT = 4 + integer :: sum = 0 + + call omp_set_num_threads(NT); + + !$omp parallel + !$omp task if(omp_get_num_threads() > 0) + !$omp atomic + sum = sum + 1 + !$omp end task + !$omp end parallel + if (sum /= NT) then + print *, "FAIL - sum == ", sum, " (expected ", NT, ")" + call abort + end if +end program F03_2_7_1d -- 2.47.2