Commit 1ebe4b4f by Joseph Myers Committed by Joseph Myers

opts-common.c (handle_option, [...]): Add diagnostic_context parameter.

	* opts-common.c (handle_option, handle_generated_option,
	read_cmdline_option, set_option): Add diagnostic_context
	parameter.  Update calls among these functions.
	(set_option): Don't use global_dc.
	* opts.c (read_cmdline_options): Pass global_dc to
	read_cmdline_option.
	(decode_options): Pass global_dc to enable_warning_as_error.
	(common_handle_option): Pass global_dc to enable_warning_as_error.
	(enable_warning_as_error): Add diagnostic_context parameter.
	Document parameters.  Don't use global_dc.  Pass
	diagnostic_context parameter to handle_generated_option.
	* opts.h (set_option, handle_option, handle_generated_option,
	read_cmdline_option, enable_warning_as_error): Add
	diagnostic_context parameter.
	* Makefile.in (lto-opts.o): Update dependencies.
	* coretypes.h (struct diagnostic_context, diagnostic_context):
	Declare here.
	* diagnostic.h (diagnostic_context): Don't declare typedef here.
	* gcc.c (process_command): Pass global_dc to read_cmdline_option.
	* langhooks-def.h (struct diagnostic_context): Don't declare here.
	(lhd_print_error_function, lhd_initialize_diagnostics): Declare
	using diagnostic_context typedef.
	* langhooks.c (lhd_initialize_diagnostics): Declare using
	diagnostic_context typedef.
	* langhooks.h (struct diagnostic_context): Don't declare here.
	(initialize_diagnostics, print_error_function): Declare using
	diagnostic_context typedef.
	* lto-opts.c: Include diagnostic.h.
	(lto_reissue_options): Pass global_dc to set_option.  Pass
	DK_UNSPECIFIED not 0.
	* plugin.c (plugins_internal_error_function): Declare using
	diagnostic_context typedef.
	* plugin.h (struct diagnostic_context): Don't declare here.
	(plugins_internal_error_function): Declare using
	diagnostic_context typedef.

c-family:
	* c-common.h (struct diagnostic_context): Don't declare here.
	(c_common_initialize_diagnostics): Declare using
	diagnostic_context typedef.
	* c-opts.c (c_common_handle_option): Pass global_dc to
	handle_generated_option.

cp:
	* cp-tree.h (cxx_print_error_function,
	cxx_initialize_diagnostics): Declare using diagnostic_context
	typedef.

From-SVN: r164991
parent bcee41ff
2010-10-05 Joseph Myers <joseph@codesourcery.com>
* opts-common.c (handle_option, handle_generated_option,
read_cmdline_option, set_option): Add diagnostic_context
parameter. Update calls among these functions.
(set_option): Don't use global_dc.
* opts.c (read_cmdline_options): Pass global_dc to
read_cmdline_option.
(decode_options): Pass global_dc to enable_warning_as_error.
(common_handle_option): Pass global_dc to enable_warning_as_error.
(enable_warning_as_error): Add diagnostic_context parameter.
Document parameters. Don't use global_dc. Pass
diagnostic_context parameter to handle_generated_option.
* opts.h (set_option, handle_option, handle_generated_option,
read_cmdline_option, enable_warning_as_error): Add
diagnostic_context parameter.
* Makefile.in (lto-opts.o): Update dependencies.
* coretypes.h (struct diagnostic_context, diagnostic_context):
Declare here.
* diagnostic.h (diagnostic_context): Don't declare typedef here.
* gcc.c (process_command): Pass global_dc to read_cmdline_option.
* langhooks-def.h (struct diagnostic_context): Don't declare here.
(lhd_print_error_function, lhd_initialize_diagnostics): Declare
using diagnostic_context typedef.
* langhooks.c (lhd_initialize_diagnostics): Declare using
diagnostic_context typedef.
* langhooks.h (struct diagnostic_context): Don't declare here.
(initialize_diagnostics, print_error_function): Declare using
diagnostic_context typedef.
* lto-opts.c: Include diagnostic.h.
(lto_reissue_options): Pass global_dc to set_option. Pass
DK_UNSPECIFIED not 0.
* plugin.c (plugins_internal_error_function): Declare using
diagnostic_context typedef.
* plugin.h (struct diagnostic_context): Don't declare here.
(plugins_internal_error_function): Declare using
diagnostic_context typedef.
2010-10-05 Olivier Hainque <hainque@adacore.com> 2010-10-05 Olivier Hainque <hainque@adacore.com>
Nicolas Roche <roche@adacore.com> Nicolas Roche <roche@adacore.com>
...@@ -2325,7 +2325,7 @@ lto-symtab.o: lto-symtab.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ ...@@ -2325,7 +2325,7 @@ lto-symtab.o: lto-symtab.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(LTO_STREAMER_H) $(LINKER_PLUGIN_API_H) gt-lto-symtab.h $(LTO_STREAMER_H) $(LINKER_PLUGIN_API_H) gt-lto-symtab.h
lto-opts.o: lto-opts.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TREE_H) \ lto-opts.o: lto-opts.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TREE_H) \
$(HASHTAB_H) $(GGC_H) $(BITMAP_H) $(FLAGS_H) opts.h options.h \ $(HASHTAB_H) $(GGC_H) $(BITMAP_H) $(FLAGS_H) opts.h options.h \
$(TARGET_H) $(TOPLEV_H) $(DIAGNOSTIC_CORE_H) $(LTO_STREAMER_H) $(TARGET_H) $(TOPLEV_H) $(DIAGNOSTIC_H) $(LTO_STREAMER_H)
lto-streamer.o: lto-streamer.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \ lto-streamer.o: lto-streamer.c $(CONFIG_H) $(SYSTEM_H) coretypes.h \
$(TM_H) $(TREE_H) $(GIMPLE_H) $(BITMAP_H) $(LTO_STREAMER_H) $(FLAGS_H) \ $(TM_H) $(TREE_H) $(GIMPLE_H) $(BITMAP_H) $(LTO_STREAMER_H) $(FLAGS_H) \
$(TREE_FLOW_H) $(DIAGNOSTIC_CORE_H) $(LTO_SYMTAB_H) $(TOPLEV_H) $(DIAGNOSTIC_CORE_H) $(TREE_FLOW_H) $(DIAGNOSTIC_CORE_H) $(LTO_SYMTAB_H) $(TOPLEV_H) $(DIAGNOSTIC_CORE_H)
......
2010-10-05 Joseph Myers <joseph@codesourcery.com>
* c-common.h (struct diagnostic_context): Don't declare here.
(c_common_initialize_diagnostics): Declare using
diagnostic_context typedef.
* c-opts.c (c_common_handle_option): Pass global_dc to
handle_generated_option.
2010-10-04 Joseph Myers <joseph@codesourcery.com> 2010-10-04 Joseph Myers <joseph@codesourcery.com>
* c-opts.c (c_common_handle_option): Pass &global_options_set to * c-opts.c (c_common_handle_option): Pass &global_options_set to
......
...@@ -740,10 +740,8 @@ extern void set_compound_literal_name (tree decl); ...@@ -740,10 +740,8 @@ extern void set_compound_literal_name (tree decl);
extern tree build_va_arg (location_t, tree, tree); extern tree build_va_arg (location_t, tree, tree);
struct diagnostic_context;
extern unsigned int c_common_option_lang_mask (void); extern unsigned int c_common_option_lang_mask (void);
extern void c_common_initialize_diagnostics (struct diagnostic_context *); extern void c_common_initialize_diagnostics (diagnostic_context *);
extern bool c_common_complain_wrong_lang_p (const struct cl_option *); extern bool c_common_complain_wrong_lang_p (const struct cl_option *);
extern void c_common_init_options (unsigned int, struct cl_decoded_option *); extern void c_common_init_options (unsigned int, struct cl_decoded_option *);
extern bool c_common_post_options (const char **); extern bool c_common_post_options (const char **);
......
...@@ -438,7 +438,7 @@ c_common_handle_option (size_t scode, const char *arg, int value, ...@@ -438,7 +438,7 @@ c_common_handle_option (size_t scode, const char *arg, int value,
set_Wformat (value); set_Wformat (value);
handle_generated_option (&global_options, &global_options_set, handle_generated_option (&global_options, &global_options_set,
OPT_Wimplicit, NULL, value, OPT_Wimplicit, NULL, value,
c_family_lang_mask, kind, handlers); c_family_lang_mask, kind, handlers, global_dc);
warn_char_subscripts = value; warn_char_subscripts = value;
warn_missing_braces = value; warn_missing_braces = value;
warn_parentheses = value; warn_parentheses = value;
...@@ -533,11 +533,13 @@ c_common_handle_option (size_t scode, const char *arg, int value, ...@@ -533,11 +533,13 @@ c_common_handle_option (size_t scode, const char *arg, int value,
if (warn_implicit_int == -1) if (warn_implicit_int == -1)
handle_generated_option (&global_options, &global_options_set, handle_generated_option (&global_options, &global_options_set,
OPT_Wimplicit_int, NULL, value, OPT_Wimplicit_int, NULL, value,
c_family_lang_mask, kind, handlers); c_family_lang_mask, kind, handlers,
global_dc);
if (warn_implicit_function_declaration == -1) if (warn_implicit_function_declaration == -1)
handle_generated_option (&global_options, &global_options_set, handle_generated_option (&global_options, &global_options_set,
OPT_Wimplicit_function_declaration, NULL, OPT_Wimplicit_function_declaration, NULL,
value, c_family_lang_mask, kind, handlers); value, c_family_lang_mask, kind, handlers,
global_dc);
break; break;
case OPT_Winvalid_pch: case OPT_Winvalid_pch:
......
...@@ -70,6 +70,8 @@ struct cl_optimization; ...@@ -70,6 +70,8 @@ struct cl_optimization;
struct cl_option; struct cl_option;
struct cl_decoded_option; struct cl_decoded_option;
struct cl_option_handlers; struct cl_option_handlers;
struct diagnostic_context;
typedef struct diagnostic_context diagnostic_context;
struct gimple_seq_d; struct gimple_seq_d;
typedef struct gimple_seq_d *gimple_seq; typedef struct gimple_seq_d *gimple_seq;
typedef const struct gimple_seq_d *const_gimple_seq; typedef const struct gimple_seq_d *const_gimple_seq;
......
2010-10-05 Joseph Myers <joseph@codesourcery.com>
* cp-tree.h (cxx_print_error_function,
cxx_initialize_diagnostics): Declare using diagnostic_context
typedef.
2010-10-04 Andi Kleen <ak@linux.intel.com> 2010-10-04 Andi Kleen <ak@linux.intel.com>
* Make-lang.in (g++, cc1plus): Add + to build rule. * Make-lang.in (g++, cc1plus): Add + to build rule.
......
...@@ -5430,7 +5430,7 @@ extern void cxx_print_xnode (FILE *, tree, int); ...@@ -5430,7 +5430,7 @@ extern void cxx_print_xnode (FILE *, tree, int);
extern void cxx_print_decl (FILE *, tree, int); extern void cxx_print_decl (FILE *, tree, int);
extern void cxx_print_type (FILE *, tree, int); extern void cxx_print_type (FILE *, tree, int);
extern void cxx_print_identifier (FILE *, tree, int); extern void cxx_print_identifier (FILE *, tree, int);
extern void cxx_print_error_function (struct diagnostic_context *, extern void cxx_print_error_function (diagnostic_context *,
const char *, const char *,
struct diagnostic_info *); struct diagnostic_info *);
...@@ -5594,7 +5594,7 @@ extern alias_set_type cxx_get_alias_set (tree); ...@@ -5594,7 +5594,7 @@ extern alias_set_type cxx_get_alias_set (tree);
extern bool cxx_warn_unused_global_decl (const_tree); extern bool cxx_warn_unused_global_decl (const_tree);
extern size_t cp_tree_size (enum tree_code); extern size_t cp_tree_size (enum tree_code);
extern bool cp_var_mod_type_p (tree, tree); extern bool cp_var_mod_type_p (tree, tree);
extern void cxx_initialize_diagnostics (struct diagnostic_context *); extern void cxx_initialize_diagnostics (diagnostic_context *);
extern int cxx_types_compatible_p (tree, tree); extern int cxx_types_compatible_p (tree, tree);
extern void init_shadowed_var_for_decl (void); extern void init_shadowed_var_for_decl (void);
......
...@@ -52,7 +52,6 @@ typedef struct diagnostic_classification_change_t ...@@ -52,7 +52,6 @@ typedef struct diagnostic_classification_change_t
} diagnostic_classification_change_t; } diagnostic_classification_change_t;
/* Forward declarations. */ /* Forward declarations. */
typedef struct diagnostic_context diagnostic_context;
typedef void (*diagnostic_starter_fn) (diagnostic_context *, typedef void (*diagnostic_starter_fn) (diagnostic_context *,
diagnostic_info *); diagnostic_info *);
typedef diagnostic_starter_fn diagnostic_finalizer_fn; typedef diagnostic_starter_fn diagnostic_finalizer_fn;
......
...@@ -3806,7 +3806,8 @@ process_command (unsigned int decoded_options_count, ...@@ -3806,7 +3806,8 @@ process_command (unsigned int decoded_options_count,
} }
read_cmdline_option (&global_options, &global_options_set, read_cmdline_option (&global_options, &global_options_set,
decoded_options + j, CL_DRIVER, &handlers); decoded_options + j, CL_DRIVER, &handlers,
global_dc);
} }
/* If -save-temps=obj and -o name, create the prefix to use for %b. /* If -save-temps=obj and -o name, create the prefix to use for %b.
......
...@@ -24,7 +24,6 @@ along with GCC; see the file COPYING3. If not see ...@@ -24,7 +24,6 @@ along with GCC; see the file COPYING3. If not see
#include "hooks.h" #include "hooks.h"
struct diagnostic_context;
struct diagnostic_info; struct diagnostic_info;
/* Note to creators of new hooks: /* Note to creators of new hooks:
...@@ -51,7 +50,7 @@ extern void lhd_print_tree_nothing (FILE *, tree, int); ...@@ -51,7 +50,7 @@ extern void lhd_print_tree_nothing (FILE *, tree, int);
extern const char *lhd_decl_printable_name (tree, int); extern const char *lhd_decl_printable_name (tree, int);
extern const char *lhd_dwarf_name (tree, int); extern const char *lhd_dwarf_name (tree, int);
extern int lhd_types_compatible_p (tree, tree); extern int lhd_types_compatible_p (tree, tree);
extern void lhd_print_error_function (struct diagnostic_context *, extern void lhd_print_error_function (diagnostic_context *,
const char *, struct diagnostic_info *); const char *, struct diagnostic_info *);
extern void lhd_set_decl_assembler_name (tree); extern void lhd_set_decl_assembler_name (tree);
extern bool lhd_warn_unused_global_decl (const_tree); extern bool lhd_warn_unused_global_decl (const_tree);
...@@ -65,7 +64,7 @@ extern tree lhd_expr_to_decl (tree, bool *, bool *); ...@@ -65,7 +64,7 @@ extern tree lhd_expr_to_decl (tree, bool *, bool *);
extern tree lhd_builtin_function (tree); extern tree lhd_builtin_function (tree);
/* Declarations of default tree inlining hooks. */ /* Declarations of default tree inlining hooks. */
extern void lhd_initialize_diagnostics (struct diagnostic_context *); extern void lhd_initialize_diagnostics (diagnostic_context *);
extern void lhd_init_options (unsigned int, extern void lhd_init_options (unsigned int,
struct cl_decoded_option *); struct cl_decoded_option *);
extern bool lhd_complain_wrong_lang_p (const struct cl_option *); extern bool lhd_complain_wrong_lang_p (const struct cl_option *);
......
...@@ -333,7 +333,7 @@ write_global_declarations (void) ...@@ -333,7 +333,7 @@ write_global_declarations (void)
/* Called to perform language-specific initialization of CTX. */ /* Called to perform language-specific initialization of CTX. */
void void
lhd_initialize_diagnostics (struct diagnostic_context *ctx ATTRIBUTE_UNUSED) lhd_initialize_diagnostics (diagnostic_context *ctx ATTRIBUTE_UNUSED)
{ {
} }
......
...@@ -23,7 +23,6 @@ along with GCC; see the file COPYING3. If not see ...@@ -23,7 +23,6 @@ along with GCC; see the file COPYING3. If not see
/* This file should be #include-d after tree.h. */ /* This file should be #include-d after tree.h. */
struct diagnostic_context;
struct diagnostic_info; struct diagnostic_info;
struct gimplify_omp_ctx; struct gimplify_omp_ctx;
...@@ -275,7 +274,7 @@ struct lang_hooks ...@@ -275,7 +274,7 @@ struct lang_hooks
/* Callback used to perform language-specific initialization for the /* Callback used to perform language-specific initialization for the
global diagnostic context structure. */ global diagnostic context structure. */
void (*initialize_diagnostics) (struct diagnostic_context *); void (*initialize_diagnostics) (diagnostic_context *);
/* Return true if a warning should be given about option OPTION, /* Return true if a warning should be given about option OPTION,
which is for the wrong language, false if it should be quietly which is for the wrong language, false if it should be quietly
...@@ -374,7 +373,7 @@ struct lang_hooks ...@@ -374,7 +373,7 @@ struct lang_hooks
int (*types_compatible_p) (tree x, tree y); int (*types_compatible_p) (tree x, tree y);
/* Called by report_error_function to print out function name. */ /* Called by report_error_function to print out function name. */
void (*print_error_function) (struct diagnostic_context *, const char *, void (*print_error_function) (diagnostic_context *, const char *,
struct diagnostic_info *); struct diagnostic_info *);
/* Convert a character from the host's to the target's character /* Convert a character from the host's to the target's character
......
...@@ -31,7 +31,7 @@ along with GCC; see the file COPYING3. If not see ...@@ -31,7 +31,7 @@ along with GCC; see the file COPYING3. If not see
#include "opts.h" #include "opts.h"
#include "options.h" #include "options.h"
#include "target.h" #include "target.h"
#include "diagnostic-core.h" #include "diagnostic.h"
#include "toplev.h" #include "toplev.h"
#include "lto-streamer.h" #include "lto-streamer.h"
...@@ -404,7 +404,7 @@ lto_reissue_options (void) ...@@ -404,7 +404,7 @@ lto_reissue_options (void)
if (flag_var) if (flag_var)
set_option (&global_options, &global_options_set, set_option (&global_options, &global_options_set,
o->code, o->value, o->arg, o->code, o->value, o->arg,
0 /*DK_UNSPECIFIED*/); DK_UNSPECIFIED, global_dc);
if (o->type == CL_TARGET) if (o->type == CL_TARGET)
targetm.handle_option (o->code, o->arg, o->value); targetm.handle_option (o->code, o->arg, o->value);
......
...@@ -804,7 +804,8 @@ keep: ...@@ -804,7 +804,8 @@ keep:
option, DK_UNSPECIFIED otherwise. GENERATED_P is true for an option, DK_UNSPECIFIED otherwise. GENERATED_P is true for an
option generated as part of processing another option or otherwise option generated as part of processing another option or otherwise
generated internally, false for one explicitly passed by the user. generated internally, false for one explicitly passed by the user.
Returns false if the switch was invalid. */ Returns false if the switch was invalid. DC is the diagnostic
context for options affecting diagnostics state, or NULL. */
bool bool
handle_option (struct gcc_options *opts, handle_option (struct gcc_options *opts,
...@@ -812,7 +813,7 @@ handle_option (struct gcc_options *opts, ...@@ -812,7 +813,7 @@ handle_option (struct gcc_options *opts,
const struct cl_decoded_option *decoded, const struct cl_decoded_option *decoded,
unsigned int lang_mask, int kind, unsigned int lang_mask, int kind,
const struct cl_option_handlers *handlers, const struct cl_option_handlers *handlers,
bool generated_p) bool generated_p, diagnostic_context *dc)
{ {
size_t opt_index = decoded->opt_index; size_t opt_index = decoded->opt_index;
const char *arg = decoded->arg; const char *arg = decoded->arg;
...@@ -823,7 +824,7 @@ handle_option (struct gcc_options *opts, ...@@ -823,7 +824,7 @@ handle_option (struct gcc_options *opts,
if (flag_var) if (flag_var)
set_option (opts, (generated_p ? NULL : opts_set), set_option (opts, (generated_p ? NULL : opts_set),
opt_index, value, arg, kind); opt_index, value, arg, kind, dc);
for (i = 0; i < handlers->num_handlers; i++) for (i = 0; i < handlers->num_handlers; i++)
if (option->flags & handlers->handlers[i].mask) if (option->flags & handlers->handlers[i].mask)
...@@ -849,13 +850,14 @@ handle_generated_option (struct gcc_options *opts, ...@@ -849,13 +850,14 @@ handle_generated_option (struct gcc_options *opts,
struct gcc_options *opts_set, struct gcc_options *opts_set,
size_t opt_index, const char *arg, int value, size_t opt_index, const char *arg, int value,
unsigned int lang_mask, int kind, unsigned int lang_mask, int kind,
const struct cl_option_handlers *handlers) const struct cl_option_handlers *handlers,
diagnostic_context *dc)
{ {
struct cl_decoded_option decoded; struct cl_decoded_option decoded;
generate_option (opt_index, arg, value, lang_mask, &decoded); generate_option (opt_index, arg, value, lang_mask, &decoded);
return handle_option (opts, opts_set, &decoded, lang_mask, kind, handlers, return handle_option (opts, opts_set, &decoded, lang_mask, kind, handlers,
true); true, dc);
} }
/* Fill in *DECODED with an option described by OPT_INDEX, ARG and /* Fill in *DECODED with an option described by OPT_INDEX, ARG and
...@@ -915,14 +917,16 @@ generate_option_input_file (const char *file, ...@@ -915,14 +917,16 @@ generate_option_input_file (const char *file,
/* Handle the switch DECODED for the language indicated by LANG_MASK, /* Handle the switch DECODED for the language indicated by LANG_MASK,
using the handlers in *HANDLERS and setting fields in OPTS and using the handlers in *HANDLERS and setting fields in OPTS and
OPTS_SET. */ OPTS_SET and using diagnostic context DC (if not NULL) for
diagnostic options. */
void void
read_cmdline_option (struct gcc_options *opts, read_cmdline_option (struct gcc_options *opts,
struct gcc_options *opts_set, struct gcc_options *opts_set,
struct cl_decoded_option *decoded, struct cl_decoded_option *decoded,
unsigned int lang_mask, unsigned int lang_mask,
const struct cl_option_handlers *handlers) const struct cl_option_handlers *handlers,
diagnostic_context *dc)
{ {
const struct cl_option *option; const struct cl_option *option;
const char *opt = decoded->orig_option_with_args_text; const char *opt = decoded->orig_option_with_args_text;
...@@ -974,16 +978,19 @@ read_cmdline_option (struct gcc_options *opts, ...@@ -974,16 +978,19 @@ read_cmdline_option (struct gcc_options *opts,
gcc_assert (!decoded->errors); gcc_assert (!decoded->errors);
if (!handle_option (opts, opts_set, decoded, lang_mask, DK_UNSPECIFIED, if (!handle_option (opts, opts_set, decoded, lang_mask, DK_UNSPECIFIED,
handlers, false)) handlers, false, dc))
error ("unrecognized command line option %qs", opt); error ("unrecognized command line option %qs", opt);
} }
/* Set any field in OPTS, and OPTS_SET if not NULL, for option /* Set any field in OPTS, and OPTS_SET if not NULL, for option
OPT_INDEX according to VALUE and ARG, diagnostic kind KIND. */ OPT_INDEX according to VALUE and ARG, diagnostic kind KIND, using
diagnostic context DC if not NULL for diagnostic
classification. */
void void
set_option (struct gcc_options *opts, struct gcc_options *opts_set, set_option (struct gcc_options *opts, struct gcc_options *opts_set,
int opt_index, int value, const char *arg, int kind) int opt_index, int value, const char *arg, int kind,
diagnostic_context *dc)
{ {
const struct cl_option *option = &cl_options[opt_index]; const struct cl_option *option = &cl_options[opt_index];
void *flag_var = option_flag_var (opt_index, opts); void *flag_var = option_flag_var (opt_index, opts);
...@@ -1028,8 +1035,9 @@ set_option (struct gcc_options *opts, struct gcc_options *opts_set, ...@@ -1028,8 +1035,9 @@ set_option (struct gcc_options *opts, struct gcc_options *opts_set,
break; break;
} }
if ((diagnostic_t) kind != DK_UNSPECIFIED) if ((diagnostic_t) kind != DK_UNSPECIFIED
diagnostic_classify_diagnostic (global_dc, opt_index, (diagnostic_t) kind, && dc != NULL)
diagnostic_classify_diagnostic (dc, opt_index, (diagnostic_t) kind,
UNKNOWN_LOCATION); UNKNOWN_LOCATION);
} }
......
...@@ -639,7 +639,8 @@ read_cmdline_options (struct cl_decoded_option *decoded_options, ...@@ -639,7 +639,8 @@ read_cmdline_options (struct cl_decoded_option *decoded_options,
} }
read_cmdline_option (&global_options, &global_options_set, read_cmdline_option (&global_options, &global_options_set,
decoded_options + i, lang_mask, handlers); decoded_options + i, lang_mask, handlers,
global_dc);
} }
} }
...@@ -879,7 +880,8 @@ decode_options (unsigned int argc, const char **argv, ...@@ -879,7 +880,8 @@ decode_options (unsigned int argc, const char **argv,
} }
/* Enable -Werror=coverage-mismatch by default */ /* Enable -Werror=coverage-mismatch by default */
enable_warning_as_error ("coverage-mismatch", 1, lang_mask, &handlers); enable_warning_as_error ("coverage-mismatch", 1, lang_mask, &handlers,
global_dc);
if (first_time_p) if (first_time_p)
{ {
...@@ -1606,7 +1608,7 @@ common_handle_option (struct gcc_options *opts, ...@@ -1606,7 +1608,7 @@ common_handle_option (struct gcc_options *opts,
break; break;
case OPT_Werror_: case OPT_Werror_:
enable_warning_as_error (arg, value, lang_mask, handlers); enable_warning_as_error (arg, value, lang_mask, handlers, global_dc);
break; break;
case OPT_Wlarger_than_: case OPT_Wlarger_than_:
...@@ -2284,12 +2286,15 @@ register_warning_as_error_callback (void (*callback) (int)) ...@@ -2284,12 +2286,15 @@ register_warning_as_error_callback (void (*callback) (int))
warning_as_error_callback = callback; warning_as_error_callback = callback;
} }
/* Enable a warning option as an error. This is used by -Werror= and /* Enable (or disable if VALUE is 0) a warning option ARG (language
also by legacy Werror-implicit-function-declaration. */ mask LANG_MASK, option handlers HANDLERS) as an error for
diagnostic context DC (possibly NULL). This is used by
-Werror=. */
void void
enable_warning_as_error (const char *arg, int value, unsigned int lang_mask, enable_warning_as_error (const char *arg, int value, unsigned int lang_mask,
const struct cl_option_handlers *handlers) const struct cl_option_handlers *handlers,
diagnostic_context *dc)
{ {
char *new_option; char *new_option;
int option_index; int option_index;
...@@ -2311,8 +2316,9 @@ enable_warning_as_error (const char *arg, int value, unsigned int lang_mask, ...@@ -2311,8 +2316,9 @@ enable_warning_as_error (const char *arg, int value, unsigned int lang_mask,
option_index = option->alias_target; option_index = option->alias_target;
if (option_index == OPT_SPECIAL_ignore) if (option_index == OPT_SPECIAL_ignore)
return; return;
diagnostic_classify_diagnostic (global_dc, option_index, kind, if (dc)
UNKNOWN_LOCATION); diagnostic_classify_diagnostic (dc, option_index, kind,
UNKNOWN_LOCATION);
if (kind == DK_ERROR) if (kind == DK_ERROR)
{ {
const struct cl_option * const option = cl_options + option_index; const struct cl_option * const option = cl_options + option_index;
...@@ -2321,7 +2327,8 @@ enable_warning_as_error (const char *arg, int value, unsigned int lang_mask, ...@@ -2321,7 +2327,8 @@ enable_warning_as_error (const char *arg, int value, unsigned int lang_mask,
if (option->var_type == CLVC_BOOLEAN) if (option->var_type == CLVC_BOOLEAN)
handle_generated_option (&global_options, &global_options_set, handle_generated_option (&global_options, &global_options_set,
option_index, NULL, value, lang_mask, option_index, NULL, value, lang_mask,
(int)kind, handlers); (int)kind, handlers,
dc);
if (warning_as_error_callback) if (warning_as_error_callback)
warning_as_error_callback (option_index); warning_as_error_callback (option_index);
......
...@@ -216,19 +216,21 @@ extern bool get_option_state (struct gcc_options *, int, ...@@ -216,19 +216,21 @@ extern bool get_option_state (struct gcc_options *, int,
struct cl_option_state *); struct cl_option_state *);
extern void set_option (struct gcc_options *opts, extern void set_option (struct gcc_options *opts,
struct gcc_options *opts_set, struct gcc_options *opts_set,
int opt_index, int value, const char *arg, int); int opt_index, int value, const char *arg, int kind,
diagnostic_context *dc);
extern void *option_flag_var (int opt_index, struct gcc_options *opts); extern void *option_flag_var (int opt_index, struct gcc_options *opts);
bool handle_option (struct gcc_options *opts, bool handle_option (struct gcc_options *opts,
struct gcc_options *opts_set, struct gcc_options *opts_set,
const struct cl_decoded_option *decoded, const struct cl_decoded_option *decoded,
unsigned int lang_mask, int kind, unsigned int lang_mask, int kind,
const struct cl_option_handlers *handlers, const struct cl_option_handlers *handlers,
bool generated_p); bool generated_p, diagnostic_context *dc);
bool handle_generated_option (struct gcc_options *opts, bool handle_generated_option (struct gcc_options *opts,
struct gcc_options *opts_set, struct gcc_options *opts_set,
size_t opt_index, const char *arg, int value, size_t opt_index, const char *arg, int value,
unsigned int lang_mask, int kind, unsigned int lang_mask, int kind,
const struct cl_option_handlers *handlers); const struct cl_option_handlers *handlers,
diagnostic_context *dc);
void generate_option (size_t opt_index, const char *arg, int value, void generate_option (size_t opt_index, const char *arg, int value,
unsigned int lang_mask, unsigned int lang_mask,
struct cl_decoded_option *decoded); struct cl_decoded_option *decoded);
...@@ -238,10 +240,12 @@ extern void read_cmdline_option (struct gcc_options *opts, ...@@ -238,10 +240,12 @@ extern void read_cmdline_option (struct gcc_options *opts,
struct gcc_options *opts_set, struct gcc_options *opts_set,
struct cl_decoded_option *decoded, struct cl_decoded_option *decoded,
unsigned int lang_mask, unsigned int lang_mask,
const struct cl_option_handlers *handlers); const struct cl_option_handlers *handlers,
diagnostic_context *dc);
extern void register_warning_as_error_callback (void (*callback) (int)); extern void register_warning_as_error_callback (void (*callback) (int));
extern void enable_warning_as_error (const char *arg, int value, extern void enable_warning_as_error (const char *arg, int value,
unsigned int lang_mask, unsigned int lang_mask,
const struct cl_option_handlers *handlers); const struct cl_option_handlers *handlers,
diagnostic_context *dc);
extern void print_ignored_options (void); extern void print_ignored_options (void);
#endif #endif
...@@ -830,7 +830,7 @@ warn_if_plugins (void) ...@@ -830,7 +830,7 @@ warn_if_plugins (void)
/* Likewise, as a callback from the diagnostics code. */ /* Likewise, as a callback from the diagnostics code. */
void void
plugins_internal_error_function (struct diagnostic_context *context ATTRIBUTE_UNUSED, plugins_internal_error_function (diagnostic_context *context ATTRIBUTE_UNUSED,
const char *msgid ATTRIBUTE_UNUSED, const char *msgid ATTRIBUTE_UNUSED,
va_list *ap ATTRIBUTE_UNUSED) va_list *ap ATTRIBUTE_UNUSED)
{ {
......
...@@ -23,7 +23,6 @@ along with GCC; see the file COPYING3. If not see ...@@ -23,7 +23,6 @@ along with GCC; see the file COPYING3. If not see
#include "gcc-plugin.h" #include "gcc-plugin.h"
struct attribute_spec; struct attribute_spec;
struct diagnostic_context;
extern void add_new_plugin (const char *); extern void add_new_plugin (const char *);
extern void parse_plugin_arg_opt (const char *); extern void parse_plugin_arg_opt (const char *);
...@@ -33,7 +32,7 @@ extern bool plugins_active_p (void); ...@@ -33,7 +32,7 @@ extern bool plugins_active_p (void);
extern void dump_active_plugins (FILE *); extern void dump_active_plugins (FILE *);
extern void debug_active_plugins (void); extern void debug_active_plugins (void);
extern void warn_if_plugins (void); extern void warn_if_plugins (void);
extern void plugins_internal_error_function (struct diagnostic_context *, extern void plugins_internal_error_function (diagnostic_context *,
const char *, va_list *); const char *, va_list *);
extern void print_plugins_versions (FILE *file, const char *indent); extern void print_plugins_versions (FILE *file, const char *indent);
extern void print_plugins_help (FILE *file, const char *indent); extern void print_plugins_help (FILE *file, const char *indent);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment