summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog48
-rw-r--r--gcc/c-family/ChangeLog5
-rw-r--r--gcc/c-family/c-opts.c9
-rw-r--r--gcc/config/i386/i386.c4
-rw-r--r--gcc/config/i386/i386.opt2
-rw-r--r--gcc/config/ia64/ia64.c3
-rw-r--r--gcc/flags.h7
-rw-r--r--gcc/gcc.c6
-rw-r--r--gcc/lto-opts.c3
-rw-r--r--gcc/optc-gen.awk6
-rw-r--r--gcc/opth-gen.awk4
-rw-r--r--gcc/opts-common.c55
-rw-r--r--gcc/opts.c116
-rw-r--r--gcc/opts.h12
-rw-r--r--gcc/toplev.c5
15 files changed, 148 insertions, 137 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b53f88c11e3..072a118bbe1 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,51 @@
+2010-10-04 Joseph Myers <joseph@codesourcery.com>
+
+ * optc-gen.awk: Define global_options_set. Don't define
+ target_flags_explicit.
+ * opth-gen.awk: Declare global_options_set. Define
+ target_flags_explicit as macro.
+ * opts-common.c (handle_option): Take opts_set and generated_p
+ parameters.
+ (handle_generated_option, read_cmdline_option, set_option): Take
+ opts_set parameter.
+ (set_option): Use opts_set instead of hardcoding target_flags and
+ target_flags_explicit.
+ * opts.c (sel_sched_switch_set, profile_arc_flag_set,
+ flag_profile_values_set, flag_unroll_loops_set, flag_tracer_set,
+ flag_value_profile_transformations_set, flag_peel_loops_set,
+ flag_branch_probabilities_set, flag_inline_functions_set,
+ flag_ipa_cp_set, flag_ipa_cp_clone_set,
+ flag_predictive_commoning_set, flag_unswitch_loops_set,
+ flag_gcse_after_reload_set): Remove.
+ (common_handle_option, lang_handle_option, target_handle_option):
+ Take opts_set parameter. Assert that it is &global_options_set.
+ (common_handle_option): Don't set _set variables. Check opts_set
+ instead of such variables.
+ (enable_warning_as_error): Pass &global_options_set to
+ handle_generated_option.
+ * opts.h (cl_option_handler_func.handler, set_option,
+ handle_option, handle_generated_option, read_cmdline_option): Add
+ opts_set parameters.
+ (handle_option): Add generated_p parameter.
+ * config/i386/i386.c (ix86_function_specific_save,
+ ix86_function_specific_restore): Updat for renaming of
+ target_flags_explicit field.
+ * config/i386/i386.opt (target_flags_explicit): Rename to
+ ix86_target_flags_explicit.
+ * config/ia64/ia64.c (ia64_override_options_after_change): Check
+ global_options_set.x_flag_selective_scheduling and
+ global_options_set.x_flag_selective_scheduling2, not
+ sel_sched_switch_set.
+ * flags.h (sel_sched_switch_set,
+ flag_speculative_prefetching_set): Remove.
+ * gcc.c (driver_handle_option): Take opts_set parameter. Assert
+ that it is &global_options_set.
+ (process_command): Pass &global_options_set to
+ read_cmdline_option.
+ * lto-opts.c (lto_reissue_options): Pass &global_options_set to
+ set_option.
+ * toplev.c (target_flags_explicit): Remove.
+
2010-10-04 Jan Hubicka <jh@suse.cz>
PR middle-end/45871
diff --git a/gcc/c-family/ChangeLog b/gcc/c-family/ChangeLog
index 6f6aa908dee..fa2e375ce1b 100644
--- a/gcc/c-family/ChangeLog
+++ b/gcc/c-family/ChangeLog
@@ -1,3 +1,8 @@
+2010-10-04 Joseph Myers <joseph@codesourcery.com>
+
+ * c-opts.c (c_common_handle_option): Pass &global_options_set to
+ handle_generated_option.
+
2010-10-03 Ian Lance Taylor <iant@google.com>
* c.opt (-fplan9-extensions): New option.
diff --git a/gcc/c-family/c-opts.c b/gcc/c-family/c-opts.c
index 3f00e56bc94..87d975f4b49 100644
--- a/gcc/c-family/c-opts.c
+++ b/gcc/c-family/c-opts.c
@@ -436,7 +436,8 @@ c_common_handle_option (size_t scode, const char *arg, int value,
case OPT_Wall:
warn_unused = value;
set_Wformat (value);
- handle_generated_option (&global_options, OPT_Wimplicit, NULL, value,
+ handle_generated_option (&global_options, &global_options_set,
+ OPT_Wimplicit, NULL, value,
c_family_lang_mask, kind, handlers);
warn_char_subscripts = value;
warn_missing_braces = value;
@@ -530,11 +531,11 @@ c_common_handle_option (size_t scode, const char *arg, int value,
case OPT_Wimplicit:
gcc_assert (value == 0 || value == 1);
if (warn_implicit_int == -1)
- handle_generated_option (&global_options, OPT_Wimplicit_int,
- NULL, value,
+ handle_generated_option (&global_options, &global_options_set,
+ OPT_Wimplicit_int, NULL, value,
c_family_lang_mask, kind, handlers);
if (warn_implicit_function_declaration == -1)
- handle_generated_option (&global_options,
+ handle_generated_option (&global_options, &global_options_set,
OPT_Wimplicit_function_declaration, NULL,
value, c_family_lang_mask, kind, handlers);
break;
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 0998f314975..7fe654a3586 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -3802,7 +3802,7 @@ ix86_function_specific_save (struct cl_target_option *ptr)
ptr->tune_defaulted = ix86_tune_defaulted;
ptr->arch_specified = ix86_arch_specified;
ptr->ix86_isa_flags_explicit = ix86_isa_flags_explicit;
- ptr->target_flags_explicit = target_flags_explicit;
+ ptr->ix86_target_flags_explicit = target_flags_explicit;
/* The fields are char but the variables are not; make sure the
values fit in the fields. */
@@ -3831,7 +3831,7 @@ ix86_function_specific_restore (struct cl_target_option *ptr)
ix86_tune_defaulted = ptr->tune_defaulted;
ix86_arch_specified = ptr->arch_specified;
ix86_isa_flags_explicit = ptr->ix86_isa_flags_explicit;
- target_flags_explicit = ptr->target_flags_explicit;
+ target_flags_explicit = ptr->ix86_target_flags_explicit;
/* Recreate the arch feature tests if the arch changed */
if (old_arch != ix86_arch)
diff --git a/gcc/config/i386/i386.opt b/gcc/config/i386/i386.opt
index 68509447cf0..9c1fe1fd729 100644
--- a/gcc/config/i386/i386.opt
+++ b/gcc/config/i386/i386.opt
@@ -50,7 +50,7 @@ int ix86_isa_flags_explicit
;; which flags were passed by the user
TargetSave
-int target_flags_explicit
+int ix86_target_flags_explicit
;; whether -mtune was not specified
TargetSave
diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c
index dcd88a0d44d..32fee12e3af 100644
--- a/gcc/config/ia64/ia64.c
+++ b/gcc/config/ia64/ia64.c
@@ -5650,7 +5650,8 @@ ia64_override_options_after_change (void)
flag_schedule_insns_after_reload = 0;
if (optimize >= 3
- && ! sel_sched_switch_set)
+ && !global_options_set.x_flag_selective_scheduling
+ && !global_options_set.x_flag_selective_scheduling2)
{
flag_selective_scheduling2 = 1;
flag_sel_sched_pipelining = 1;
diff --git a/gcc/flags.h b/gcc/flags.h
index 906168cfa91..e69de534427 100644
--- a/gcc/flags.h
+++ b/gcc/flags.h
@@ -276,9 +276,6 @@ extern int flag_evaluation_order;
extern unsigned HOST_WIDE_INT g_switch_value;
extern bool g_switch_set;
-/* Same for selective scheduling. */
-extern bool sel_sched_switch_set;
-
/* Whether to run the warn_unused_result attribute pass. */
extern bool flag_warn_unused_result;
@@ -293,10 +290,6 @@ enum graph_dump_types
};
extern enum graph_dump_types graph_dump_format;
-/* True if flag_speculative_prefetching was set by user. Used to suppress
- warning message in case flag was set by -fprofile-{generate,use}. */
-extern bool flag_speculative_prefetching_set;
-
/* Type of stack check. */
enum stack_check_type
{
diff --git a/gcc/gcc.c b/gcc/gcc.c
index ef637e9764b..82ddc1620d2 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -3151,6 +3151,7 @@ static int last_language_n_infiles;
static bool
driver_handle_option (struct gcc_options *opts,
+ struct gcc_options *opts_set,
const struct cl_decoded_option *decoded,
unsigned int lang_mask ATTRIBUTE_UNUSED, int kind,
const struct cl_option_handlers *handlers ATTRIBUTE_UNUSED)
@@ -3163,6 +3164,7 @@ driver_handle_option (struct gcc_options *opts,
bool do_save = true;
gcc_assert (opts == &global_options);
+ gcc_assert (opts_set == &global_options_set);
gcc_assert (kind == DK_UNSPECIFIED);
switch (opt_index)
@@ -3803,8 +3805,8 @@ process_command (unsigned int decoded_options_count,
continue;
}
- read_cmdline_option (&global_options, decoded_options + j,
- CL_DRIVER, &handlers);
+ read_cmdline_option (&global_options, &global_options_set,
+ decoded_options + j, CL_DRIVER, &handlers);
}
/* If -save-temps=obj and -o name, create the prefix to use for %b.
diff --git a/gcc/lto-opts.c b/gcc/lto-opts.c
index bbe21384fd3..f3c5d673823 100644
--- a/gcc/lto-opts.c
+++ b/gcc/lto-opts.c
@@ -402,7 +402,8 @@ lto_reissue_options (void)
void *flag_var = option_flag_var (o->code, &global_options);
if (flag_var)
- set_option (&global_options, o->code, o->value, o->arg,
+ set_option (&global_options, &global_options_set,
+ o->code, o->value, o->arg,
0 /*DK_UNSPECIFIED*/);
if (o->type == CL_TARGET)
diff --git a/gcc/optc-gen.awk b/gcc/optc-gen.awk
index bad055f0989..643ad159a99 100644
--- a/gcc/optc-gen.awk
+++ b/gcc/optc-gen.awk
@@ -76,9 +76,7 @@ for (i = 1; i <= n_headers; i++)
print "#include " quote "opts.h" quote
print "#include " quote "intl.h" quote
print ""
-print "#ifdef GCC_DRIVER"
-print "int target_flags_explicit;"
-print "#else"
+print "#ifndef GCC_DRIVER"
print "#include " quote "flags.h" quote
print "#include " quote "target.h" quote
print "#endif /* GCC_DRIVER */"
@@ -140,6 +138,8 @@ for (i = 0; i < n_opts; i++) {
}
print "};"
print ""
+print "struct gcc_options global_options_set;"
+print ""
print "const char * const lang_names[] =\n{"
for (i = 0; i < n_langs; i++) {
diff --git a/gcc/opth-gen.awk b/gcc/opth-gen.awk
index d27dfc08764..99b5cff29f9 100644
--- a/gcc/opth-gen.awk
+++ b/gcc/opth-gen.awk
@@ -70,8 +70,6 @@ print ""
print "#ifndef OPTIONS_H"
print "#define OPTIONS_H"
print ""
-print "extern int target_flags_explicit;"
-print ""
have_save = 0;
@@ -127,6 +125,8 @@ for (i = 0; i < n_opts; i++) {
print "#ifndef GENERATOR_FILE"
print "};"
print "extern struct gcc_options global_options;"
+print "extern struct gcc_options global_options_set;"
+print "#define target_flags_explicit global_options_set.x_target_flags"
print "#endif"
print ""
diff --git a/gcc/opts-common.c b/gcc/opts-common.c
index 09e5b11bdbf..5ac4fabaec1 100644
--- a/gcc/opts-common.c
+++ b/gcc/opts-common.c
@@ -799,15 +799,20 @@ keep:
}
/* Handle option DECODED for the language indicated by LANG_MASK,
- using the handlers in HANDLERS and setting fields in OPTS. KIND is
- the diagnostic_t if this is a diagnostics option, DK_UNSPECIFIED
- otherwise. Returns false if the switch was invalid. */
+ using the handlers in HANDLERS and setting fields in OPTS and
+ OPTS_SET. KIND is the diagnostic_t if this is a diagnostics
+ option, DK_UNSPECIFIED otherwise. GENERATED_P is true for an
+ option generated as part of processing another option or otherwise
+ generated internally, false for one explicitly passed by the user.
+ Returns false if the switch was invalid. */
bool
handle_option (struct gcc_options *opts,
+ struct gcc_options *opts_set,
const struct cl_decoded_option *decoded,
unsigned int lang_mask, int kind,
- const struct cl_option_handlers *handlers)
+ const struct cl_option_handlers *handlers,
+ bool generated_p)
{
size_t opt_index = decoded->opt_index;
const char *arg = decoded->arg;
@@ -817,12 +822,13 @@ handle_option (struct gcc_options *opts,
size_t i;
if (flag_var)
- set_option (opts, opt_index, value, arg, kind);
+ set_option (opts, (generated_p ? NULL : opts_set),
+ opt_index, value, arg, kind);
for (i = 0; i < handlers->num_handlers; i++)
if (option->flags & handlers->handlers[i].mask)
{
- if (!handlers->handlers[i].handler (opts, decoded,
+ if (!handlers->handlers[i].handler (opts, opts_set, decoded,
lang_mask, kind, handlers))
return false;
else
@@ -839,15 +845,17 @@ handle_option (struct gcc_options *opts,
command line. */
bool
-handle_generated_option (struct gcc_options *opts, size_t opt_index,
- const char *arg, int value,
+handle_generated_option (struct gcc_options *opts,
+ struct gcc_options *opts_set,
+ size_t opt_index, const char *arg, int value,
unsigned int lang_mask, int kind,
const struct cl_option_handlers *handlers)
{
struct cl_decoded_option decoded;
generate_option (opt_index, arg, value, lang_mask, &decoded);
- return handle_option (opts, &decoded, lang_mask, kind, handlers);
+ return handle_option (opts, opts_set, &decoded, lang_mask, kind, handlers,
+ true);
}
/* Fill in *DECODED with an option described by OPT_INDEX, ARG and
@@ -906,10 +914,12 @@ generate_option_input_file (const char *file,
}
/* Handle the switch DECODED for the language indicated by LANG_MASK,
- using the handlers in *HANDLERS and setting fields in OPTS. */
+ using the handlers in *HANDLERS and setting fields in OPTS and
+ OPTS_SET. */
void
read_cmdline_option (struct gcc_options *opts,
+ struct gcc_options *opts_set,
struct cl_decoded_option *decoded,
unsigned int lang_mask,
const struct cl_option_handlers *handlers)
@@ -963,33 +973,42 @@ read_cmdline_option (struct gcc_options *opts,
gcc_assert (!decoded->errors);
- if (!handle_option (opts, decoded, lang_mask, DK_UNSPECIFIED, handlers))
+ if (!handle_option (opts, opts_set, decoded, lang_mask, DK_UNSPECIFIED,
+ handlers, false))
error ("unrecognized command line option %qs", opt);
}
-/* Set any field in OPTS for option OPT_INDEX according to VALUE and ARG,
- diagnostic kind KIND. */
+/* Set any field in OPTS, and OPTS_SET if not NULL, for option
+ OPT_INDEX according to VALUE and ARG, diagnostic kind KIND. */
void
-set_option (struct gcc_options *opts, int opt_index, int value,
- const char *arg, int kind)
+set_option (struct gcc_options *opts, struct gcc_options *opts_set,
+ int opt_index, int value, const char *arg, int kind)
{
const struct cl_option *option = &cl_options[opt_index];
void *flag_var = option_flag_var (opt_index, opts);
+ void *set_flag_var = NULL;
if (!flag_var)
return;
+ if (opts_set != NULL)
+ set_flag_var = option_flag_var (opt_index, opts_set);
+
switch (option->var_type)
{
case CLVC_BOOLEAN:
*(int *) flag_var = value;
+ if (set_flag_var)
+ *(int *) set_flag_var = 1;
break;
case CLVC_EQUAL:
*(int *) flag_var = (value
? option->var_value
: !option->var_value);
+ if (set_flag_var)
+ *(int *) set_flag_var = 1;
break;
case CLVC_BIT_CLEAR:
@@ -998,12 +1017,14 @@ set_option (struct gcc_options *opts, int opt_index, int value,
*(int *) flag_var |= option->var_value;
else
*(int *) flag_var &= ~option->var_value;
- if (flag_var == &target_flags)
- target_flags_explicit |= option->var_value;
+ if (set_flag_var)
+ *(int *) set_flag_var |= option->var_value;
break;
case CLVC_STRING:
*(const char **) flag_var = arg;
+ if (set_flag_var)
+ *(const char **) set_flag_var = "";
break;
}
diff --git a/gcc/opts.c b/gcc/opts.c
index 88321b55a25..393c8b115a0 100644
--- a/gcc/opts.c
+++ b/gcc/opts.c
@@ -50,9 +50,6 @@ along with GCC; see the file COPYING3. If not see
unsigned HOST_WIDE_INT g_switch_value;
bool g_switch_set;
-/* Same for selective scheduling. */
-bool sel_sched_switch_set;
-
/* True if we should exit after parsing options. */
bool exit_after_options;
@@ -345,15 +342,6 @@ struct visibility_flags visibility_options;
/* What to print when a switch has no documentation. */
static const char undocumented_msg[] = N_("This switch lacks documentation");
-/* Used for bookkeeping on whether user set these flags so
- -fprofile-use/-fprofile-generate does not use them. */
-static bool profile_arc_flag_set, flag_profile_values_set;
-static bool flag_unroll_loops_set, flag_tracer_set;
-static bool flag_value_profile_transformations_set;
-static bool flag_peel_loops_set, flag_branch_probabilities_set;
-static bool flag_inline_functions_set, flag_ipa_cp_set, flag_ipa_cp_clone_set;
-static bool flag_predictive_commoning_set, flag_unswitch_loops_set, flag_gcse_after_reload_set;
-
/* Functions excluded from profiling. */
typedef char *char_p; /* For DEF_VEC_P. */
@@ -377,6 +365,7 @@ const char **in_fnames;
unsigned num_in_fnames;
static bool common_handle_option (struct gcc_options *opts,
+ struct gcc_options *opts_set,
const struct cl_decoded_option *decoded,
unsigned int lang_mask, int kind,
const struct cl_option_handlers *handlers);
@@ -517,11 +506,13 @@ post_handling_callback (const struct cl_decoded_option *decoded ATTRIBUTE_UNUSED
static bool
lang_handle_option (struct gcc_options *opts,
+ struct gcc_options *opts_set,
const struct cl_decoded_option *decoded,
unsigned int lang_mask ATTRIBUTE_UNUSED, int kind,
const struct cl_option_handlers *handlers)
{
gcc_assert (opts == &global_options);
+ gcc_assert (opts_set == &global_options_set);
gcc_assert (decoded->canonical_option_num_elements <= 2);
return lang_hooks.handle_option (decoded->opt_index, decoded->arg,
decoded->value, kind, handlers);
@@ -532,11 +523,13 @@ lang_handle_option (struct gcc_options *opts,
static bool
target_handle_option (struct gcc_options *opts,
+ struct gcc_options *opts_set,
const struct cl_decoded_option *decoded,
unsigned int lang_mask ATTRIBUTE_UNUSED, int kind,
const struct cl_option_handlers *handlers ATTRIBUTE_UNUSED)
{
gcc_assert (opts == &global_options);
+ gcc_assert (opts_set == &global_options_set);
gcc_assert (decoded->canonical_option_num_elements <= 2);
gcc_assert (kind == DK_UNSPECIFIED);
return targetm.handle_option (decoded->opt_index, decoded->arg,
@@ -649,8 +642,8 @@ read_cmdline_options (struct cl_decoded_option *decoded_options,
continue;
}
- read_cmdline_option (&global_options, decoded_options + i,
- lang_mask, handlers);
+ read_cmdline_option (&global_options, &global_options_set,
+ decoded_options + i, lang_mask, handlers);
}
}
@@ -1433,6 +1426,7 @@ print_specific_help (unsigned int include_flags,
static bool
common_handle_option (struct gcc_options *opts,
+ struct gcc_options *opts_set,
const struct cl_decoded_option *decoded,
unsigned int lang_mask, int kind ATTRIBUTE_UNUSED,
const struct cl_option_handlers *handlers)
@@ -1444,6 +1438,7 @@ common_handle_option (struct gcc_options *opts,
enum opt_code code = (enum opt_code) scode;
gcc_assert (opts == &global_options);
+ gcc_assert (opts_set == &global_options_set);
gcc_assert (decoded->canonical_option_num_elements <= 2);
switch (code)
@@ -1704,10 +1699,6 @@ common_handle_option (struct gcc_options *opts,
align_loops = value;
break;
- case OPT_fbranch_probabilities:
- flag_branch_probabilities_set = true;
- break;
-
case OPT_fcall_used_:
fix_register (arg, 0, 1);
break;
@@ -1801,10 +1792,6 @@ common_handle_option (struct gcc_options *opts,
}
break;
- case OPT_fpeel_loops:
- flag_peel_loops_set = true;
- break;
-
case OPT_fplugin_:
#ifdef ENABLE_PLUGIN
add_new_plugin (arg);
@@ -1821,14 +1808,6 @@ common_handle_option (struct gcc_options *opts,
#endif
break;
- case OPT_fprofile_arcs:
- profile_arc_flag_set = true;
- break;
-
- case OPT_finline_functions:
- flag_inline_functions_set = true;
- break;
-
case OPT_fprofile_dir_:
profile_data_prefix = xstrdup (arg);
break;
@@ -1839,30 +1818,30 @@ common_handle_option (struct gcc_options *opts,
value = true;
/* No break here - do -fprofile-use processing. */
case OPT_fprofile_use:
- if (!flag_branch_probabilities_set)
+ if (!opts_set->x_flag_branch_probabilities)
flag_branch_probabilities = value;
- if (!flag_profile_values_set)
+ if (!opts_set->x_flag_profile_values)
flag_profile_values = value;
- if (!flag_unroll_loops_set)
+ if (!opts_set->x_flag_unroll_loops)
flag_unroll_loops = value;
- if (!flag_peel_loops_set)
+ if (!opts_set->x_flag_peel_loops)
flag_peel_loops = value;
- if (!flag_tracer_set)
+ if (!opts_set->x_flag_tracer)
flag_tracer = value;
- if (!flag_value_profile_transformations_set)
+ if (!opts_set->x_flag_value_profile_transformations)
flag_value_profile_transformations = value;
- if (!flag_inline_functions_set)
+ if (!opts_set->x_flag_inline_functions)
flag_inline_functions = value;
- if (!flag_ipa_cp_set)
+ if (!opts_set->x_flag_ipa_cp)
flag_ipa_cp = value;
- if (!flag_ipa_cp_clone_set
+ if (!opts_set->x_flag_ipa_cp_clone
&& value && flag_ipa_cp)
flag_ipa_cp_clone = value;
- if (!flag_predictive_commoning_set)
+ if (!opts_set->x_flag_predictive_commoning)
flag_predictive_commoning = value;
- if (!flag_unswitch_loops_set)
+ if (!opts_set->x_flag_unswitch_loops)
flag_unswitch_loops = value;
- if (!flag_gcse_after_reload_set)
+ if (!opts_set->x_flag_gcse_after_reload)
flag_gcse_after_reload = value;
break;
@@ -1871,20 +1850,16 @@ common_handle_option (struct gcc_options *opts,
value = true;
/* No break here - do -fprofile-generate processing. */
case OPT_fprofile_generate:
- if (!profile_arc_flag_set)
+ if (!opts_set->x_profile_arc_flag)
profile_arc_flag = value;
- if (!flag_profile_values_set)
+ if (!opts_set->x_flag_profile_values)
flag_profile_values = value;
- if (!flag_value_profile_transformations_set)
+ if (!opts_set->x_flag_value_profile_transformations)
flag_value_profile_transformations = value;
- if (!flag_inline_functions_set)
+ if (!opts_set->x_flag_inline_functions)
flag_inline_functions = value;
break;
- case OPT_fprofile_values:
- flag_profile_values_set = true;
- break;
-
case OPT_fshow_column:
global_dc->show_column = value;
break;
@@ -1904,10 +1879,6 @@ common_handle_option (struct gcc_options *opts,
}
break;
- case OPT_fvpt:
- flag_value_profile_transformations_set = true;
- break;
-
case OPT_frandom_seed:
/* The real switch is -fno-random-seed. */
if (value)
@@ -1919,11 +1890,6 @@ common_handle_option (struct gcc_options *opts,
set_random_seed (arg);
break;
- case OPT_fselective_scheduling:
- case OPT_fselective_scheduling2:
- sel_sched_switch_set = true;
- break;
-
case OPT_fsched_verbose_:
#ifdef INSN_SCHEDULING
fix_sched_param ("verbose", arg);
@@ -2023,34 +1989,6 @@ common_handle_option (struct gcc_options *opts,
flag_ira_verbose = value;
break;
- case OPT_ftracer:
- flag_tracer_set = true;
- break;
-
- case OPT_fipa_cp:
- flag_ipa_cp_set = true;
- break;
-
- case OPT_fipa_cp_clone:
- flag_ipa_cp_clone_set = true;
- break;
-
- case OPT_fpredictive_commoning:
- flag_predictive_commoning_set = true;
- break;
-
- case OPT_funswitch_loops:
- flag_unswitch_loops_set = true;
- break;
-
- case OPT_fgcse_after_reload:
- flag_gcse_after_reload_set = true;
- break;
-
- case OPT_funroll_loops:
- flag_unroll_loops_set = true;
- break;
-
case OPT_g:
set_debug_level (NO_DEBUG, DEFAULT_GDB_EXTENSIONS, arg);
break;
@@ -2385,8 +2323,8 @@ enable_warning_as_error (const char *arg, int value, unsigned int lang_mask,
/* -Werror=foo implies -Wfoo. */
if (option->var_type == CLVC_BOOLEAN)
- handle_generated_option (&global_options, option_index,
- NULL, value, lang_mask,
+ handle_generated_option (&global_options, &global_options_set,
+ option_index, NULL, value, lang_mask,
(int)kind, handlers);
if (warning_as_error_callback)
diff --git a/gcc/opts.h b/gcc/opts.h
index 6ede04d7b50..2dbccbc79fe 100644
--- a/gcc/opts.h
+++ b/gcc/opts.h
@@ -157,6 +157,7 @@ struct cl_option_handler_func
{
/* The function called to handle the option. */
bool (*handler) (struct gcc_options *opts,
+ struct gcc_options *opts_set,
const struct cl_decoded_option *decoded,
unsigned int lang_mask, int kind,
const struct cl_option_handlers *handlers);
@@ -213,14 +214,18 @@ extern void decode_options (unsigned int argc, const char **argv,
extern int option_enabled (int opt_idx, void *opts);
extern bool get_option_state (struct gcc_options *, int,
struct cl_option_state *);
-extern void set_option (struct gcc_options *opts, int opt_index, int value,
- const char *arg, int);
+extern void set_option (struct gcc_options *opts,
+ struct gcc_options *opts_set,
+ int opt_index, int value, const char *arg, int);
extern void *option_flag_var (int opt_index, struct gcc_options *opts);
bool handle_option (struct gcc_options *opts,
+ struct gcc_options *opts_set,
const struct cl_decoded_option *decoded,
unsigned int lang_mask, int kind,
- const struct cl_option_handlers *handlers);
+ const struct cl_option_handlers *handlers,
+ bool generated_p);
bool handle_generated_option (struct gcc_options *opts,
+ struct gcc_options *opts_set,
size_t opt_index, const char *arg, int value,
unsigned int lang_mask, int kind,
const struct cl_option_handlers *handlers);
@@ -230,6 +235,7 @@ void generate_option (size_t opt_index, const char *arg, int value,
void generate_option_input_file (const char *file,
struct cl_decoded_option *decoded);
extern void read_cmdline_option (struct gcc_options *opts,
+ struct gcc_options *opts_set,
struct cl_decoded_option *decoded,
unsigned int lang_mask,
const struct cl_option_handlers *handlers);
diff --git a/gcc/toplev.c b/gcc/toplev.c
index 850cbf548a0..80487f63f00 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -155,11 +155,6 @@ const char *aux_base_name;
/* Prefix for profile data files */
const char *profile_data_prefix;
-/* A mask of target_flags that includes bit X if X was set or cleared
- on the command line. */
-
-int target_flags_explicit;
-
/* Debug hooks - dependent upon command line options. */
const struct gcc_debug_hooks *debug_hooks;