public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc r11-9017] GCC11 - Fortran: combined directives - order(concurrent) not on distribute
@ 2021-09-20 15:25 Tobias Burnus
  0 siblings, 0 replies; only message in thread
From: Tobias Burnus @ 2021-09-20 15:25 UTC (permalink / raw)
  To: gcc-cvs

https://gcc.gnu.org/g:b1dc26d3543d79805751c26ba5b142eeeb1f55b8

commit r11-9017-gb1dc26d3543d79805751c26ba5b142eeeb1f55b8
Author: Tobias Burnus <tobias@codesourcery.com>
Date:   Mon Sep 20 17:24:56 2021 +0200

    GCC11 - Fortran: combined directives - order(concurrent) not on distribute
    
    While OpenMP 5.1 and GCC 12 permits 'order(concurrent)' on distribute,
    OpenMP 5.0 and GCC 11 don't. This patch for GCC 11 ensures the clause also
    does not end up on 'distribute' when splitting combined directives.
    
    gcc/fortran/ChangeLog:
    
            * trans-openmp.c (gfc_split_omp_clauses): Don't put 'order(concurrent)'
            on 'distribute' for combined directives, matching OpenMP 5.0
    
    gcc/testsuite/ChangeLog:
    
            * gfortran.dg/gomp/distribute-order-concurrent.f90: New test.

Diff:
---
 gcc/fortran/trans-openmp.c                         |  2 --
 .../gomp/distribute-order-concurrent.f90           | 25 ++++++++++++++++++++++
 2 files changed, 25 insertions(+), 2 deletions(-)

diff --git a/gcc/fortran/trans-openmp.c b/gcc/fortran/trans-openmp.c
index 7e931bf4bc7..973d916b4a2 100644
--- a/gcc/fortran/trans-openmp.c
+++ b/gcc/fortran/trans-openmp.c
@@ -5176,8 +5176,6 @@ gfc_split_omp_clauses (gfc_code *code,
 	  /* Duplicate collapse.  */
 	  clausesa[GFC_OMP_SPLIT_DISTRIBUTE].collapse
 	    = code->ext.omp_clauses->collapse;
-	  clausesa[GFC_OMP_SPLIT_DISTRIBUTE].order_concurrent
-	    = code->ext.omp_clauses->order_concurrent;
 	}
       if (mask & GFC_OMP_MASK_PARALLEL)
 	{
diff --git a/gcc/testsuite/gfortran.dg/gomp/distribute-order-concurrent.f90 b/gcc/testsuite/gfortran.dg/gomp/distribute-order-concurrent.f90
new file mode 100644
index 00000000000..9597d913684
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/gomp/distribute-order-concurrent.f90
@@ -0,0 +1,25 @@
+! { dg-additional-options "-fdump-tree-original" }
+!
+! In OpenMP 5.0, 'order(concurrent)' does not apply to distribute
+! Ensure that it is rejected in GCC 11.
+! 
+! Note: OpenMP 5.1 allows it; the GCC 12 testcase for it is gfortran.dg/gomp/order-5.f90
+
+subroutine f(a)
+implicit none
+integer :: i, thr
+!save :: thr
+integer :: a(:)
+
+!$omp distribute parallel do order(concurrent) private(thr)
+  do i = 1, 10
+    thr = 5
+    a(i) = thr
+  end do
+!$omp end distribute parallel do
+end
+
+! { dg-final { scan-tree-dump-not "omp distribute\[^\n\r]*order" "original" } }
+! { dg-final { scan-tree-dump "#pragma omp distribute\[\n\r\]" "original" } }
+! { dg-final { scan-tree-dump "#pragma omp parallel private\\(thr\\)" "original" } }
+! { dg-final { scan-tree-dump "#pragma omp for nowait order\\(concurrent\\)" "original" } }


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2021-09-20 15:25 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-09-20 15:25 [gcc r11-9017] GCC11 - Fortran: combined directives - order(concurrent) not on distribute Tobias Burnus

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).