From c5a26c321054c97cafebeaac8df7d28c0ec2d5c5 Mon Sep 17 00:00:00 2001 From: Tobias Burnus Date: Sun, 27 Feb 2011 15:36:53 +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: r170542 --- gcc/fortran/ChangeLog | 9 ++++ gcc/fortran/openmp.c | 1 + libgomp/ChangeLog | 8 +++ libgomp/testsuite/libgomp.fortran/task3.f90 | 54 +++++++++++++++++++++ 4 files changed, 72 insertions(+) create mode 100644 libgomp/testsuite/libgomp.fortran/task3.f90 diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 41fc97d058cb..e00d9846ae26 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 d3c4f2fc7e67..dbb4ded4da74 100644 --- a/gcc/fortran/openmp.c +++ b/gcc/fortran/openmp.c @@ -1518,6 +1518,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 d2fe407bbb10..203ae921e4a3 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,3 +1,11 @@ +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..5300b9058b7b --- /dev/null +++ b/libgomp/testsuite/libgomp.fortran/task3.f90 @@ -0,0 +1,54 @@ +! { 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 +! { 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