aboutsummaryrefslogtreecommitdiff
path: root/libcpp/include/cpplib.h
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2022-08-18 23:01:01 +0000
committerJoseph Myers <joseph@codesourcery.com>2022-08-18 23:01:01 +0000
commitd7c3000147c1d8090f66a2baf4623d2c0dfe8eb6 (patch)
treebd7d06ce9c89f25ee43e73644ed143f5947147a7 /libcpp/include/cpplib.h
parent8731aa98674eda56425ffd652918ce4979631f67 (diff)
downloadgcc-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.h3
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;