diff options
author | Joseph Myers <joseph@codesourcery.com> | 2022-08-18 23:01:01 +0000 |
---|---|---|
committer | Joseph Myers <joseph@codesourcery.com> | 2022-08-18 23:01:01 +0000 |
commit | d7c3000147c1d8090f66a2baf4623d2c0dfe8eb6 (patch) | |
tree | bd7d06ce9c89f25ee43e73644ed143f5947147a7 /libcpp/include/cpplib.h | |
parent | 8731aa98674eda56425ffd652918ce4979631f67 (diff) | |
download | gcc-d7c3000147c1d8090f66a2baf4623d2c0dfe8eb6.zip gcc-d7c3000147c1d8090f66a2baf4623d2c0dfe8eb6.tar.gz gcc-d7c3000147c1d8090f66a2baf4623d2c0dfe8eb6.tar.bz2 |
preprocessor: Support #warning for standard C2x
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.
Bootstrapped with no regressions for x86_64-pc-linux-gnu.
gcc/testsuite/
* gcc.dg/cpp/c11-warning-1.c, gcc.dg/cpp/c11-warning-2.c,
gcc.dg/cpp/c11-warning-3.c, gcc.dg/cpp/c11-warning-4.c,
gcc.dg/cpp/c2x-warning-1.c, gcc.dg/cpp/c2x-warning-2.c,
gcc.dg/cpp/gnu11-warning-1.c, gcc.dg/cpp/gnu11-warning-2.c,
gcc.dg/cpp/gnu11-warning-3.c, gcc.dg/cpp/gnu11-warning-4.c,
gcc.dg/cpp/gnu2x-warning-1.c, gcc.dg/cpp/gnu2x-warning-2.c: New
tests.
libcpp/
* include/cpplib.h (struct cpp_options): Add warning_directive.
* init.cc (struct lang_flags, lang_defaults): Add
warning_directive.
* directives.cc (DIRECTIVE_TABLE): Mark #warning as STDC2X not
EXTENSION.
(directive_diagnostics): Diagnose #warning with -Wc11-c2x-compat,
or with -pedantic for a standard not supporting #warning.
Diffstat (limited to 'libcpp/include/cpplib.h')
-rw-r--r-- | libcpp/include/cpplib.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/libcpp/include/cpplib.h b/libcpp/include/cpplib.h index 26e2b4c..58ed51d 100644 --- a/libcpp/include/cpplib.h +++ b/libcpp/include/cpplib.h @@ -513,6 +513,9 @@ struct cpp_options /* Nonzero for the '#elifdef' and '#elifndef' directives. */ unsigned char elifdef; + /* Nonzero for the '#warning' directive. */ + unsigned char warning_directive; + /* Nonzero means tokenize C++20 module directives. */ unsigned char module_directives; |