aboutsummaryrefslogtreecommitdiff
path: root/gcc/opts-global.c
diff options
context:
space:
mode:
authorMartin Liska <mliska@suse.cz>2017-08-29 09:46:10 +0200
committerMartin Liska <marxin@gcc.gnu.org>2017-08-29 07:46:10 +0000
commit130fcab02f1fbb097fc52fc9a8892472e3fa0c6c (patch)
tree046ad3bcd18ba4f41c0aa0e8b5abc176198fc723 /gcc/opts-global.c
parentfaa5399be693b2cdea641b976156f0fc89fa10cf (diff)
downloadgcc-130fcab02f1fbb097fc52fc9a8892472e3fa0c6c.zip
gcc-130fcab02f1fbb097fc52fc9a8892472e3fa0c6c.tar.gz
gcc-130fcab02f1fbb097fc52fc9a8892472e3fa0c6c.tar.bz2
Fix --help=target (PR other/39851).
2017-08-29 Martin Liska <mliska@suse.cz> PR other/39851 * gcc.c (driver_handle_option): Add new argument. * opts-common.c (handle_option): Pass target_option_override_hook. * opts-global.c (lang_handle_option): Add new option. (set_default_handlers): Add new argument. (decode_options): Likewise. * opts.c (target_handle_option): Likewise. (common_handle_option): Call target_option_override_hook. * opts.h (struct cl_option_handler_func): Add hook for target option override. (struct cl_option_handlers): Likewise. (set_default_handlers): Add new argument. (decode_options): Likewise. (common_handle_option): Likewise. (target_handle_option): Likewise. * toplev.c (toplev::main): Pass targetm.target_option.override hook. 2017-08-29 Martin Liska <mliska@suse.cz> PR other/39851 * c-common.c (parse_optimize_options): Add argument to function call. * c-pragma.c (handle_pragma_diagnostic): Likewise. From-SVN: r251400
Diffstat (limited to 'gcc/opts-global.c')
-rw-r--r--gcc/opts-global.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/gcc/opts-global.c b/gcc/opts-global.c
index fc55512..343dbd3 100644
--- a/gcc/opts-global.c
+++ b/gcc/opts-global.c
@@ -169,7 +169,8 @@ lang_handle_option (struct gcc_options *opts,
unsigned int lang_mask ATTRIBUTE_UNUSED, int kind,
location_t loc,
const struct cl_option_handlers *handlers,
- diagnostic_context *dc)
+ diagnostic_context *dc,
+ void (*) (void))
{
gcc_assert (opts == &global_options);
gcc_assert (opts_set == &global_options_set);
@@ -269,10 +270,12 @@ decode_cmdline_options_to_array_default_mask (unsigned int argc,
/* Set *HANDLERS to the default set of option handlers for use in the
compilers proper (not the driver). */
void
-set_default_handlers (struct cl_option_handlers *handlers)
+set_default_handlers (struct cl_option_handlers *handlers,
+ void (*target_option_override_hook) (void))
{
handlers->unknown_option_callback = unknown_option_callback;
handlers->wrong_lang_callback = complain_wrong_lang;
+ handlers->target_option_override_hook = target_option_override_hook;
handlers->num_handlers = 3;
handlers->handlers[0].handler = lang_handle_option;
handlers->handlers[0].mask = initial_lang_mask;
@@ -290,7 +293,8 @@ void
decode_options (struct gcc_options *opts, struct gcc_options *opts_set,
struct cl_decoded_option *decoded_options,
unsigned int decoded_options_count,
- location_t loc, diagnostic_context *dc)
+ location_t loc, diagnostic_context *dc,
+ void (*target_option_override_hook) (void))
{
struct cl_option_handlers handlers;
@@ -298,7 +302,7 @@ decode_options (struct gcc_options *opts, struct gcc_options *opts_set,
lang_mask = initial_lang_mask;
- set_default_handlers (&handlers);
+ set_default_handlers (&handlers, target_option_override_hook);
default_options_optimization (opts, opts_set,
decoded_options, decoded_options_count,