+2014-08-29 Manuel López-Ibáñez <manu@gcc.gnu.org>
+
+ * c.opt (Wbuiltin-macro-redefined,Wdeprecated,Wendif-labels,
+ Winvalid-pch,Wliteral-suffix,Wmissing-include-dirs,Wtrigraphs,
+ Wundef): Use CPP, Var and Init.
+ * c-opts.c (c_common_handle_option): Do not handle the above flags here.
+
2014-08-29 Manuel López-Ibáñez <manu@gcc.gnu.org>
* c.opt (Wbuiltin-macro-redefined): Use CPP, Var and Init.
case OPT_Wall:
/* ??? Don't add new options here. Use LangEnabledBy in c.opt. */
- cpp_opts->warn_trigraphs = value;
cpp_opts->warn_num_sign_change = value;
break;
cpp_opts->warn_cxx_operator_names = value;
break;
- case OPT_Wdeprecated:
- cpp_opts->cpp_warn_deprecated = value;
- break;
-
- case OPT_Wendif_labels:
- cpp_opts->warn_endif_labels = value;
- break;
-
- case OPT_Winvalid_pch:
- cpp_opts->warn_invalid_pch = value;
- break;
-
- case OPT_Wliteral_suffix:
- cpp_opts->warn_literal_suffix = value;
- break;
-
case OPT_Wlong_long:
cpp_opts->cpp_warn_long_long = value;
break;
- case OPT_Wmissing_include_dirs:
- cpp_opts->warn_missing_include_dirs = value;
- break;
case OPT_Wnormalized_:
/* FIXME: Move all this to c.opt. */
if (kind == DK_ERROR)
cpp_opts->cpp_warn_traditional = value;
break;
- case OPT_Wtrigraphs:
- cpp_opts->warn_trigraphs = value;
- break;
-
- case OPT_Wundef:
- cpp_opts->warn_undef = value;
- break;
-
case OPT_Wunknown_pragmas:
/* Set to greater than 1, so that even unknown pragmas in
system headers will be warned about. */
;
Wdeprecated
-C C++ ObjC ObjC++ Var(warn_deprecated) Init(1) Warning
+C C++ ObjC ObjC++ CPP(cpp_warn_deprecated) Var(warn_deprecated) Init(1) Warning
Warn if a deprecated compiler feature, class, method, or field is used
Wdesignated-init
Warn about an empty body in an if or else statement
Wendif-labels
-C ObjC C++ ObjC++ Warning
+C ObjC C++ ObjC++ CPP(warn_endif_labels) Var(cpp_warn_endif_labels) Init(1) Warning
Warn about stray tokens after #elif and #endif
Wenum-compare
Warn about invalid uses of the \"offsetof\" macro
Winvalid-pch
-C ObjC C++ ObjC++ Warning
+C ObjC C++ ObjC++ CPP(warn_invalid_pch) Var(cpp_warn_invalid_pch) Warning
Warn about PCH files that are found but not used
Wjump-misses-init
Warn when a jump misses a variable initialization
Wliteral-suffix
-C++ ObjC++ Warning
+C++ ObjC++ CPP(warn_literal_suffix) Var(cpp_warn_literal_suffix) Init(1) Warning
Warn when a string or character literal is followed by a ud-suffix which does not begin with an underscore.
Wlogical-op
;
Wmissing-include-dirs
-C ObjC C++ ObjC++ Warning
+C ObjC C++ ObjC++ CPP(warn_missing_include_dirs) Var(cpp_warn_missing_include_dirs) Warning
Warn about user-specified include directories that do not exist
Wmissing-parameter-type
Warn of prototypes causing type conversions different from what would happen in the absence of prototype
Wtrigraphs
-C ObjC C++ ObjC++ Warning
+C ObjC C++ ObjC++ CPP(warn_trigraphs) Var(cpp_warn_trigraphs) Init(2) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
Warn if trigraphs are encountered that might affect the meaning of the program
Wundeclared-selector
Warn about @selector()s without previously declared methods
Wundef
-C ObjC C++ ObjC++ Warning
+C ObjC C++ ObjC++ CPP(warn_undef) Var(cpp_warn_undef) Warning
Warn if an undefined macro is used in an #if directive
Wuninitialized
+2014-08-29 Manuel López-Ibáñez <manu@gcc.gnu.org>
+
+ * directives.c (check_eol_1): New.
+ (check_eol_endif_labels): New.
+ (check_eol): Call check_eol_1.
+ (do_else,do_endif): Call check_eol_endif_labels.
+
2014-08-29 Manuel López-Ibáñez <manu@gcc.gnu.org>
* macro.c (warn_of_redefinition): Suppress warnings for builtins
;
}
-/* Ensure there are no stray tokens at the end of a directive. If
- EXPAND is true, tokens macro-expanding to nothing are allowed. */
+/* Helper function for check_oel. */
+
static void
-check_eol (cpp_reader *pfile, bool expand)
+check_eol_1 (cpp_reader *pfile, bool expand, int reason)
{
if (! SEEN_EOL () && (expand
? cpp_get_token (pfile)
: _cpp_lex_token (pfile))->type != CPP_EOF)
- cpp_error (pfile, CPP_DL_PEDWARN, "extra tokens at end of #%s directive",
- pfile->directive->name);
+ cpp_pedwarning (pfile, reason, "extra tokens at end of #%s directive",
+ pfile->directive->name);
+}
+
+/* Variant of check_eol used for Wendif-labels warnings. */
+
+static void
+check_eol_endif_labels (cpp_reader *pfile)
+{
+ check_eol_1 (pfile, false, CPP_W_ENDIF_LABELS);
+}
+
+/* Ensure there are no stray tokens at the end of a directive. If
+ EXPAND is true, tokens macro-expanding to nothing are allowed. */
+
+static void
+check_eol (cpp_reader *pfile, bool expand)
+{
+ check_eol_1 (pfile, expand, CPP_W_NONE);
}
/* Ensure there are no stray tokens other than comments at the end of
/* Only check EOL if was not originally skipping. */
if (!ifs->was_skipping && CPP_OPTION (pfile, warn_endif_labels))
- check_eol (pfile, false);
+ check_eol_endif_labels (pfile);
}
}
{
/* Only check EOL if was not originally skipping. */
if (!ifs->was_skipping && CPP_OPTION (pfile, warn_endif_labels))
- check_eol (pfile, false);
+ check_eol_endif_labels (pfile);
/* If potential control macro, we go back outside again. */
if (ifs->next == 0 && ifs->mi_cmacro)