The default "C" language dialect for GCC is gnu89. To ease the transition to the eventual switch to gnu99, a warning flag is desired that can flag potentially changed language features between C89 and C99, much like -Wc++11-compat helps programmers transition from C++03 to C++11. See some of the commentary from Joseph here: http://gcc.gnu.org/ml/gcc/2012-01/msg00126.html
I'd like to experiment with this one, so taking for now.
Author: mpolacek Date: Sun Aug 10 06:10:49 2014 New Revision: 213786 URL: https://gcc.gnu.org/viewcvs?rev=213786&root=gcc&view=rev Log: PR c/51849 gcc/ * gcc/doc/invoke.texi: Document -Wc90-c99-compat. gcc/c-family/ * c-opts.c (sanitize_cpp_opts): Pass warn_c90_c99_compat to libcpp. * c.opt (Wc90-c99-compat): Add option. gcc/c/ * c-decl.c (build_array_declarator): Remove check for !flag_isoc99. Call pedwarn_c90 instead of pedwarn. (check_bitfield_type_and_width): Likewise. (declspecs_add_qual): Likewise. (declspecs_add_type): Likewise. (warn_variable_length_array): Unify function for -pedantic and -Wvla. Adjust to only call pedwarn_c90. (grokdeclarator): Remove pedantic && !flag_isoc99 check. Call pedwarn_c90 instead of pedwarn. * c-errors.c (pedwarn_c90): Handle -Wc90-c99-compat. * c-parser.c (disable_extension_diagnostics): Handle warn_c90_c99_compat. (restore_extension_diagnostics): Likewise. (c_parser_enum_specifier): Remove check for !flag_isoc99. Call pedwarn_c90 instead of pedwarn. (c_parser_initelt): Likewise. (c_parser_postfix_expression): Likewise. (c_parser_postfix_expression_after_paren_type): Likewise. (c_parser_compound_statement_nostart): Remove check for !flag_isoc99. * c-tree.h: Fix formatting. * c-typeck.c (build_array_ref): Remove check for !flag_isoc99. Call pedwarn_c90 instead of pedwarn. gcc/testsuite/ * gcc.dg/Wc90-c99-compat-1.c: New test. * gcc.dg/Wc90-c99-compat-2.c: New test. * gcc.dg/Wc90-c99-compat-3.c: New test. * gcc.dg/Wc90-c99-compat-4.c: New test. * gcc.dg/Wc90-c99-compat-5.c: New test. * gcc.dg/Wc90-c99-compat-6.c: New test. * gcc.dg/wvla-1.c: Adjust dg-warning. * gcc.dg/wvla-2.c: Adjust dg-warning. * gcc.dg/wvla-4.c: Adjust dg-warning. * gcc.dg/wvla-6.c: Adjust dg-warning. libcpp/ * lex.c (_cpp_lex_direct): Warn when -Wc90-c99-compat is in effect. * charset.c (_cpp_valid_ucn): Likewise. * include/cpplib.h (cpp_options): Add cpp_warn_c90_c99_compat. * macro.c (replace_args): Warn when -Wc90-c99-compat is in effect. (parse_params): Likewise. Added: trunk/gcc/testsuite/gcc.dg/Wc90-c99-compat-1.c trunk/gcc/testsuite/gcc.dg/Wc90-c99-compat-2.c trunk/gcc/testsuite/gcc.dg/Wc90-c99-compat-3.c trunk/gcc/testsuite/gcc.dg/Wc90-c99-compat-4.c trunk/gcc/testsuite/gcc.dg/Wc90-c99-compat-5.c trunk/gcc/testsuite/gcc.dg/Wc90-c99-compat-6.c Modified: trunk/gcc/ChangeLog trunk/gcc/c-family/ChangeLog trunk/gcc/c-family/c-opts.c trunk/gcc/c-family/c.opt trunk/gcc/c/ChangeLog trunk/gcc/c/c-decl.c trunk/gcc/c/c-errors.c trunk/gcc/c/c-parser.c trunk/gcc/c/c-tree.h trunk/gcc/c/c-typeck.c trunk/gcc/doc/invoke.texi trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/gcc.dg/wvla-1.c trunk/gcc/testsuite/gcc.dg/wvla-2.c trunk/gcc/testsuite/gcc.dg/wvla-4.c trunk/gcc/testsuite/gcc.dg/wvla-6.c trunk/libcpp/ChangeLog trunk/libcpp/charset.c trunk/libcpp/include/cpplib.h trunk/libcpp/lex.c trunk/libcpp/macro.c
-Wc90-c99-compat has been added.