Skip to content
Snippets Groups Projects
  • Joseph Myers's avatar
    d7c30001
    preprocessor: Support #warning for standard C2x · d7c30001
    Joseph Myers authored
    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.
    d7c30001
    History
    preprocessor: Support #warning for standard C2x
    Joseph Myers authored
    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.