]> git.ipfire.org Git - thirdparty/gcc.git/commit
preprocessor: Implement C++23 P2437R1 - Support for #warning [PR106646]
authorJakub Jelinek <jakub@redhat.com>
Wed, 24 Aug 2022 07:55:57 +0000 (09:55 +0200)
committerJakub Jelinek <jakub@redhat.com>
Wed, 24 Aug 2022 07:55:57 +0000 (09:55 +0200)
commit365202625d2f2d6694dba889ca67498fefb59c68
tree0eb106ecafdb17bdb057a8efc837647c5598fe8b
parent42301c02e458cdce646ffaf7ea1df502ab2e8ddc
preprocessor: Implement C++23 P2437R1 - Support for #warning [PR106646]

On Thu, Aug 18, 2022 at 11:02:44PM +0000, Joseph Myers wrote:
> ISO C2x standardizes the existing #warning extension.  Arrange
> accordingly for it not to be diagnosed with -std=c2x -pedantic, but to
> be diagnosed with -Wc11-c2x-compat.

And here is the corresponding C++ version.
Don't pedwarn about this for C++23/GNU++23 and tweak the diagnostics
for C++ otherwise, + testsuite coverage.
The diagnostic wording is similar e.g. to the #elifdef diagnostics.

2022-08-24  Jakub Jelinek  <jakub@redhat.com>

PR c++/106646
* init.cc: Implement C++23 P2437R1 - Support for #warning.
(lang_defaults): Set warning_directive for GNUCXX23 and CXX23.
* directives.cc (directive_diagnostics): Use different wording of
#warning pedwarn for C++.

* g++.dg/cpp/warning-1.C: New test.
* g++.dg/cpp/warning-2.C: New test.
* g++.dg/cpp/warning-3.C: New test.
gcc/testsuite/g++.dg/cpp/warning-1.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp/warning-2.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp/warning-3.C [new file with mode: 0644]
libcpp/directives.cc
libcpp/init.cc