public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc/devel/omp/gcc-12] OpenMP: Update invoke.texi and fix fortran/parse.cc for -fopenmp-simd
@ 2022-10-05 13:40 Tobias Burnus
0 siblings, 0 replies; only message in thread
From: Tobias Burnus @ 2022-10-05 13:40 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:5c341c056b0706d88a03a10061cdaf356b737bb4
commit 5c341c056b0706d88a03a10061cdaf356b737bb4
Author: Tobias Burnus <tobias@codesourcery.com>
Date: Wed Oct 5 15:39:03 2022 +0200
OpenMP: Update invoke.texi and fix fortran/parse.cc for -fopenmp-simd
Split off from the 'Fortran: Add OpenMP's assume(s) directives' patch.
gcc/
* doc/invoke.texi (-fopenmp): Mention C++ attribut syntax.
(-fopenmp-simd): Likewise; update permitted directives.
gcc/fortran/
* parse.cc (decode_omp_directive): Handle '(end) loop' and 'scan'
also with -fopenmp-simd.
gcc/testsuite/
* gfortran.dg/gomp/openmp-simd-7.f90: New test.
(cherry picked from commit 8792047470073df0da4a5b91997d6058193d7676)
Diff:
---
gcc/ChangeLog.omp | 8 ++++++++
gcc/doc/invoke.texi | 12 ++++++++----
gcc/fortran/ChangeLog.omp | 8 ++++++++
gcc/fortran/parse.cc | 6 +++---
gcc/testsuite/ChangeLog.omp | 7 +++++++
gcc/testsuite/gfortran.dg/gomp/openmp-simd-7.f90 | 23 +++++++++++++++++++++++
6 files changed, 57 insertions(+), 7 deletions(-)
diff --git a/gcc/ChangeLog.omp b/gcc/ChangeLog.omp
index 72151ab2673..52bc562d95e 100644
--- a/gcc/ChangeLog.omp
+++ b/gcc/ChangeLog.omp
@@ -1,3 +1,11 @@
+2022-10-05 Tobias Burnus <tobias@codesourcery.com>
+
+ Backport from mainline:
+ 2022-10-04 Tobias Burnus <tobias@codesourcery.com>
+
+ * doc/invoke.texi (-fopenmp): Mention C++ attribut syntax.
+ (-fopenmp-simd): Likewise; update permitted directives.
+
2022-10-05 Tobias Burnus <tobias@codesourcery.com>
Backport from mainline:
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 52ba1c84bec..8bd72790056 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -2746,7 +2746,8 @@ permitted.
@item -fopenmp
@opindex fopenmp
@cindex OpenMP parallel
-Enable handling of OpenMP directives @code{#pragma omp} in C/C++ and
+Enable handling of OpenMP directives @code{#pragma omp} in C/C++,
+@code{[[omp::directive(...)]]} and @code{[[omp::sequence(...)]]} in C++ and
@code{!$omp} in Fortran. When @option{-fopenmp} is specified, the
compiler generates parallel code according to the OpenMP Application
Program Interface v4.5 @w{@uref{https://www.openmp.org}}. This option
@@ -2758,9 +2759,12 @@ have support for @option{-pthread}. @option{-fopenmp} implies
@opindex fopenmp-simd
@cindex OpenMP SIMD
@cindex SIMD
-Enable handling of OpenMP's SIMD directives with @code{#pragma omp}
-in C/C++ and @code{!$omp} in Fortran. Other OpenMP directives
-are ignored.
+Enable handling of OpenMP's @code{simd}, @code{declare simd},
+@code{declare reduction}, @code{assume}, @code{ordered}, @code{scan},
+@code{loop} directives and combined or composite directives with
+@code{simd} as constituent with @code{#pragma omp} in C/C++,
+@code{[[omp::directive(...)]]} and @code{[[omp::sequence(...)]]} in C++
+and @code{!$omp} in Fortran. Other OpenMP directives are ignored.
@item -fopenmp-target-simd-clone
@opindex fopenmp-target-simd-clone
diff --git a/gcc/fortran/ChangeLog.omp b/gcc/fortran/ChangeLog.omp
index 5d056d031c5..e1f67c8c0c3 100644
--- a/gcc/fortran/ChangeLog.omp
+++ b/gcc/fortran/ChangeLog.omp
@@ -1,3 +1,11 @@
+2022-10-05 Tobias Burnus <tobias@codesourcery.com>
+
+ Backport from mainline:
+ 2022-10-04 Tobias Burnus <tobias@codesourcery.com>
+
+ * parse.cc (decode_omp_directive): Handle '(end) loop' and 'scan'
+ also with -fopenmp-simd.
+
2022-09-30 Tobias Burnus <tobias@codesourcery.com>
Backport from mainline:
diff --git a/gcc/fortran/parse.cc b/gcc/fortran/parse.cc
index fc88111a7ad..28d9cccdd25 100644
--- a/gcc/fortran/parse.cc
+++ b/gcc/fortran/parse.cc
@@ -931,7 +931,7 @@ decode_omp_directive (void)
matcho ("end distribute", gfc_match_omp_eos_error, ST_OMP_END_DISTRIBUTE);
matchs ("end do simd", gfc_match_omp_end_nowait, ST_OMP_END_DO_SIMD);
matcho ("end do", gfc_match_omp_end_nowait, ST_OMP_END_DO);
- matcho ("end loop", gfc_match_omp_eos_error, ST_OMP_END_LOOP);
+ matchs ("end loop", gfc_match_omp_eos_error, ST_OMP_END_LOOP);
matchs ("end simd", gfc_match_omp_eos_error, ST_OMP_END_SIMD);
matcho ("end masked taskloop simd", gfc_match_omp_eos_error,
ST_OMP_END_MASKED_TASKLOOP_SIMD);
@@ -1034,7 +1034,7 @@ decode_omp_directive (void)
matcho ("nothing", gfc_match_omp_nothing, ST_NONE);
break;
case 'l':
- matcho ("loop", gfc_match_omp_loop, ST_OMP_LOOP);
+ matchs ("loop", gfc_match_omp_loop, ST_OMP_LOOP);
break;
case 'o':
if (gfc_match ("ordered depend (") == MATCH_YES
@@ -1081,7 +1081,7 @@ decode_omp_directive (void)
matcho ("requires", gfc_match_omp_requires, ST_OMP_REQUIRES);
break;
case 's':
- matcho ("scan", gfc_match_omp_scan, ST_OMP_SCAN);
+ matchs ("scan", gfc_match_omp_scan, ST_OMP_SCAN);
matcho ("scope", gfc_match_omp_scope, ST_OMP_SCOPE);
matcho ("sections", gfc_match_omp_sections, ST_OMP_SECTIONS);
matcho ("section", gfc_match_omp_eos_error, ST_OMP_SECTION);
diff --git a/gcc/testsuite/ChangeLog.omp b/gcc/testsuite/ChangeLog.omp
index 9dc42e62822..b26b68f3e3e 100644
--- a/gcc/testsuite/ChangeLog.omp
+++ b/gcc/testsuite/ChangeLog.omp
@@ -1,3 +1,10 @@
+2022-10-05 Tobias Burnus <tobias@codesourcery.com>
+
+ Backport from mainline:
+ 2022-10-04 Tobias Burnus <tobias@codesourcery.com>
+
+ * gfortran.dg/gomp/openmp-simd-7.f90: New test.
+
2022-10-04 Tobias Burnus <tobias@codesourcery.com>
Backport from mainline:
diff --git a/gcc/testsuite/gfortran.dg/gomp/openmp-simd-7.f90 b/gcc/testsuite/gfortran.dg/gomp/openmp-simd-7.f90
new file mode 100644
index 00000000000..d7010bb4288
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/gomp/openmp-simd-7.f90
@@ -0,0 +1,23 @@
+! { dg-options "-fno-openmp -fopenmp-simd -fdump-tree-original" }
+
+subroutine foo (a, b)
+ integer, contiguous :: a(:), b(:)
+ integer :: i
+ !$omp simd reduction (inscan, +:r)
+ do i = 1, 1024
+ r = r + a(i)
+ !$omp scan inclusive(r)
+ b(i) = r
+ end do
+ !$omp end simd
+
+ !$omp loop
+ do i = 1, 1024
+ a(i) = a(i) + i
+ end do
+ !$omp end loop
+end
+
+! { dg-final { scan-tree-dump "#pragma omp simd linear\\(i:1\\) reduction\\(inscan,\\+:r\\)" "original" } }
+! { dg-final { scan-tree-dump "#pragma omp scan inclusive\\(r\\)" "original" } }
+! { dg-final { scan-tree-dump "#pragma omp loop" "original" } }
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-10-05 13:40 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-10-05 13:40 [gcc/devel/omp/gcc-12] OpenMP: Update invoke.texi and fix fortran/parse.cc for -fopenmp-simd 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).