deferred_count++;
}
-/* -Werror= may set a warning option to enable a warning that is emitted
- by the preprocessor. Set any corresponding flag in cpp_opts. */
-
-static void
-warning_as_error_callback (int option_index)
-{
- switch (option_index)
- {
- default:
- /* Ignore options not associated with the preprocessor. */
- break;
-
- case OPT_Wdeprecated:
- cpp_opts->cpp_warn_deprecated = 1;
- break;
-
- case OPT_Wcomment:
- cpp_opts->warn_comments = 1;
- break;
-
- case OPT_Wtrigraphs:
- cpp_opts->warn_trigraphs = 1;
- break;
-
- case OPT_Wmultichar:
- cpp_opts->warn_multichar = 1;
- break;
-
- case OPT_Wtraditional:
- cpp_opts->cpp_warn_traditional = 1;
- break;
-
- case OPT_Wlong_long:
- cpp_opts->cpp_warn_long_long = 1;
- break;
-
- case OPT_Wendif_labels:
- cpp_opts->warn_endif_labels = 1;
- break;
-
- case OPT_Wvariadic_macros:
- /* Set the local flag that is used later to update cpp_opts. */
- warn_variadic_macros = 1;
- break;
-
- case OPT_Wbuiltin_macro_redefined:
- cpp_opts->warn_builtin_macro_redefined = 1;
- break;
-
- case OPT_Wundef:
- cpp_opts->warn_undef = 1;
- break;
-
- case OPT_Wunused_macros:
- /* Set the local flag that is used later to update cpp_opts. */
- warn_unused_macros = 1;
- break;
-
- case OPT_Wc___compat:
- /* Add warnings in the same way as c_common_handle_option below. */
- if (warn_enum_compare == -1)
- warn_enum_compare = 1;
- if (warn_jump_misses_init == -1)
- warn_jump_misses_init = 1;
- cpp_opts->warn_cxx_operator_names = 1;
- break;
-
- case OPT_Wnormalized_:
- inform (input_location, "-Werror=normalized=: Set -Wnormalized=nfc");
- cpp_opts->warn_normalize = normalized_C;
- break;
-
- case OPT_Winvalid_pch:
- cpp_opts->warn_invalid_pch = 1;
- break;
-
- case OPT_Wcpp:
- /* Handled by standard diagnostics using the option's associated
- boolean variable. */
- break;
- }
-}
-
/* Return language mask for option parsing. */
unsigned int
c_common_option_lang_mask (void)
void
c_common_initialize_diagnostics (diagnostic_context *context)
{
- /* Register callback for warnings enabled by -Werror=. */
- register_warning_as_error_callback (warning_as_error_callback);
-
/* This is conditionalized only because that is the way the front
ends used to do it. Maybe this should be unconditional? */
if (c_dialect_cxx ())
break;
case OPT_Wnormalized_:
- if (!value || (arg && strcasecmp (arg, "none") == 0))
- cpp_opts->warn_normalize = normalized_none;
- else if (!arg || strcasecmp (arg, "nfkc") == 0)
- cpp_opts->warn_normalize = normalized_KC;
- else if (strcasecmp (arg, "id") == 0)
- cpp_opts->warn_normalize = normalized_identifier_C;
- else if (strcasecmp (arg, "nfc") == 0)
- cpp_opts->warn_normalize = normalized_C;
+ if (kind == DK_ERROR)
+ {
+ gcc_assert (!arg);
+ inform (input_location, "-Werror=normalized=: set -Wnormalized=nfc");
+ cpp_opts->warn_normalize = normalized_C;
+ }
else
- error ("argument %qs to %<-Wnormalized%> not recognized", arg);
- break;
+ {
+ if (!value || (arg && strcasecmp (arg, "none") == 0))
+ cpp_opts->warn_normalize = normalized_none;
+ else if (!arg || strcasecmp (arg, "nfkc") == 0)
+ cpp_opts->warn_normalize = normalized_KC;
+ else if (strcasecmp (arg, "id") == 0)
+ cpp_opts->warn_normalize = normalized_identifier_C;
+ else if (strcasecmp (arg, "nfc") == 0)
+ cpp_opts->warn_normalize = normalized_C;
+ else
+ error ("argument %qs to %<-Wnormalized%> not recognized", arg);
+ break;
+ }
case OPT_Wreturn_type:
warn_return_type = value;
return true;
}
-/* Callback function, called when -Werror= enables a warning. */
-
-static void (*warning_as_error_callback) (int) = NULL;
-
-/* Register a callback for enable_warning_as_error calls. */
-
-void
-register_warning_as_error_callback (void (*callback) (int))
-{
- gcc_assert (warning_as_error_callback == NULL || callback == NULL);
- warning_as_error_callback = callback;
-}
-
/* Enable (or disable if VALUE is 0) a warning option ARG (language
mask LANG_MASK, option handlers HANDLERS) as an error for
diagnostic context DC (possibly NULL). This is used by
option_index, NULL, value, lang_mask,
(int)kind, handlers,
dc);
-
- if (warning_as_error_callback)
- warning_as_error_callback (option_index);
}
}
free (new_option);