public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc r13-2552] OpenMP: Document ompx warnings + add Fortran omx warning [PR106670]
@ 2022-09-08 19:04 Tobias Burnus
0 siblings, 0 replies; only message in thread
From: Tobias Burnus @ 2022-09-08 19:04 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:264deecb16abcfc8ca8efe9b94b0ad55febd55cc
commit r13-2552-g264deecb16abcfc8ca8efe9b94b0ad55febd55cc
Author: Tobias Burnus <tobias@codesourcery.com>
Date: Thu Sep 8 21:03:21 2022 +0200
OpenMP: Document ompx warnings + add Fortran omx warning [PR106670]
omp/ompx sentinels are for vendor extensions; as they might be required for
the correctness of the program, a warning should be printable. This patch
documents in the OpenMP 5.2 table the existing warnings, including the new
warning for for fixed source form Fortran.
PR fortran/106670
gcc/fortran/ChangeLog:
* scanner.cc (skip_fixed_omp_sentinel): Add -Wsurprising warning
for 'omx' sentinels with -fopenmp.
* invoke.texi (-Wsurprising): Document additional warning case.
libgomp/ChangeLog:
* libgomp.texi (OpenMP 5.2): Add comment to ompx/omx entry.
gcc/testsuite/ChangeLog:
* c-c++-common/gomp/ompx-1.c: New test.
* c-c++-common/gomp/ompx-2.c: New test.
* g++.dg/gomp/ompx-attrs-1.C: New test.
* gfortran.dg/gomp/ompx-1.f90: New test.
* gfortran.dg/gomp/omx-1.f: New test.
* gfortran.dg/gomp/omx-2.f: New test.
Diff:
---
gcc/fortran/invoke.texi | 5 +++++
gcc/fortran/scanner.cc | 8 ++++++--
gcc/testsuite/c-c++-common/gomp/ompx-1.c | 4 ++++
gcc/testsuite/c-c++-common/gomp/ompx-2.c | 5 +++++
gcc/testsuite/g++.dg/gomp/ompx-attrs-1.C | 7 +++++++
gcc/testsuite/gfortran.dg/gomp/ompx-1.f90 | 2 ++
gcc/testsuite/gfortran.dg/gomp/omx-1.f | 7 +++++++
gcc/testsuite/gfortran.dg/gomp/omx-2.f | 9 +++++++++
libgomp/libgomp.texi | 8 +++++++-
9 files changed, 52 insertions(+), 3 deletions(-)
diff --git a/gcc/fortran/invoke.texi b/gcc/fortran/invoke.texi
index 4d1e0d6b513..58502d38ac8 100644
--- a/gcc/fortran/invoke.texi
+++ b/gcc/fortran/invoke.texi
@@ -1092,6 +1092,11 @@ The type of a function result is declared more than once with the same type. If
@item
A @code{CHARACTER} variable is declared with negative length.
+
+@item
+With @option{-fopenmp}, for fixed-form source code, when an @code{omx}
+vendor-extension sentinel is encountered. (The equivalent @code{ompx},
+used in free-form source code, is diagnosed by default.)
@end itemize
@item -Wtabs
diff --git a/gcc/fortran/scanner.cc b/gcc/fortran/scanner.cc
index 2dff2514700..fa1d9cba394 100644
--- a/gcc/fortran/scanner.cc
+++ b/gcc/fortran/scanner.cc
@@ -982,8 +982,9 @@ static bool
skip_fixed_omp_sentinel (locus *start)
{
gfc_char_t c;
- if (((c = next_char ()) == 'm' || c == 'M')
- && ((c = next_char ()) == 'p' || c == 'P'))
+ if ((c = next_char ()) != 'm' && c != 'M')
+ return false;
+ if ((c = next_char ()) == 'p' || c == 'P')
{
c = next_char ();
if (c != '\n'
@@ -1005,6 +1006,9 @@ skip_fixed_omp_sentinel (locus *start)
}
}
}
+ else if (UNLIKELY (c == 'x' || c == 'X'))
+ gfc_warning_now (OPT_Wsurprising,
+ "Ignoring '!$omx' vendor-extension sentinel at %C");
return false;
}
diff --git a/gcc/testsuite/c-c++-common/gomp/ompx-1.c b/gcc/testsuite/c-c++-common/gomp/ompx-1.c
new file mode 100644
index 00000000000..9758d0f0cae
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/gomp/ompx-1.c
@@ -0,0 +1,4 @@
+void f(void)
+{
+ #pragma ompx some_vendor_extension
+}
diff --git a/gcc/testsuite/c-c++-common/gomp/ompx-2.c b/gcc/testsuite/c-c++-common/gomp/ompx-2.c
new file mode 100644
index 00000000000..4b66b0e2b1c
--- /dev/null
+++ b/gcc/testsuite/c-c++-common/gomp/ompx-2.c
@@ -0,0 +1,5 @@
+/* { dg-additional-options "-Wunknown-pragmas" } */
+void f(void)
+{
+ #pragma ompx some_vendor_extension /* { dg-warning "-:ignoring '#pragma ompx some_vendor_extension'" } */
+}
diff --git a/gcc/testsuite/g++.dg/gomp/ompx-attrs-1.C b/gcc/testsuite/g++.dg/gomp/ompx-attrs-1.C
new file mode 100644
index 00000000000..2e9fc0b591f
--- /dev/null
+++ b/gcc/testsuite/g++.dg/gomp/ompx-attrs-1.C
@@ -0,0 +1,7 @@
+// { dg-do compile { target c++11 } }
+
+void
+foo ()
+{
+ [[ompx::directive(some_vendor_extension)]]; /* { dg-warning "attributes at the beginning of statement are ignored" } */
+}
diff --git a/gcc/testsuite/gfortran.dg/gomp/ompx-1.f90 b/gcc/testsuite/gfortran.dg/gomp/ompx-1.f90
new file mode 100644
index 00000000000..e5dc6520fd4
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/gomp/ompx-1.f90
@@ -0,0 +1,2 @@
+!$ompx foo ! { dg-warning "!.OMP at .1. starts a commented line as it neither is followed by a space nor is a continuation line" }
+end
diff --git a/gcc/testsuite/gfortran.dg/gomp/omx-1.f b/gcc/testsuite/gfortran.dg/gomp/omx-1.f
new file mode 100644
index 00000000000..4febf8908bf
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/gomp/omx-1.f
@@ -0,0 +1,7 @@
+!$omx foo
+!$OMX foo
+c$oMx foo
+c$OMx foo
+*$oMx foo
+*$OMx foo
+ end
diff --git a/gcc/testsuite/gfortran.dg/gomp/omx-2.f b/gcc/testsuite/gfortran.dg/gomp/omx-2.f
new file mode 100644
index 00000000000..3c107d98367
--- /dev/null
+++ b/gcc/testsuite/gfortran.dg/gomp/omx-2.f
@@ -0,0 +1,9 @@
+! { dg-additional-options "-Wsurprising" }
+
+!$omx foo ! { dg-warning "Ignoring '!.omx' vendor-extension sentinel" }
+!$OMX foo ! { dg-warning "Ignoring '!.omx' vendor-extension sentinel" }
+c$oMx foo ! { dg-warning "Ignoring '!.omx' vendor-extension sentinel" }
+c$OMx foo ! { dg-warning "Ignoring '!.omx' vendor-extension sentinel" }
+*$oMx foo ! { dg-warning "Ignoring '!.omx' vendor-extension sentinel" }
+*$OMx foo ! { dg-warning "Ignoring '!.omx' vendor-extension sentinel" }
+ end
diff --git a/libgomp/libgomp.texi b/libgomp/libgomp.texi
index 8847f3ee59f..3dc467aade0 100644
--- a/libgomp/libgomp.texi
+++ b/libgomp/libgomp.texi
@@ -361,7 +361,13 @@ to address of matching mapped list item per 5.1, Sect. 2.21.7.2 @tab N @tab
@item @code{omp_in_explicit_task} routine and @emph{implicit-task-var} ICV
@tab N @tab
@item @code{omp}/@code{ompx}/@code{omx} sentinels and @code{omp_}/@code{ompx_}
- namespaces @tab N/A @tab
+ namespaces @tab N/A
+ @tab warning for @code{omp/ompx} sentinels@footnote{@code{omp/ompx}
+ sentinels as C/C++ pragma and C++ attributes are warned for with
+ @code{-Wunknown-pragmas} (implied by @code{-Wall}) and @code{-Wattributes}
+ (enabled by default), respectively; for Fortran free-source code, there is
+ a warning enabled by default and for fixed-source code with
+ @code{-Wsurprising} (enabled by @code{-Wall})}
@item Clauses on @code{end} directive can be on directive @tab N @tab
@item Deprecation of no-argument @code{destroy} clause on @code{depobj}
@tab N @tab
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-09-08 19:04 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-09-08 19:04 [gcc r13-2552] OpenMP: Document ompx warnings + add Fortran omx warning [PR106670] 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).