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.
This commit is contained in:
parent
8731aa9867
commit
d7c3000147
15 changed files with 110 additions and 26 deletions
|
@ -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;
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue