Commit a7d0d30f by Joseph Myers Committed by Joseph Myers

common.opt (in_lto_p): New Variable entry.

	* common.opt (in_lto_p): New Variable entry.
	* flags.h (in_lto_p): Move to common.opt.
	* gcc.c: Include params.h.
	(set_option_handlers): Also use common_handle_option and
	target_handle_option.
	(main): Call global_init_params, finish_params and
	init_options_struct.
	* opts.c (debug_type_names): Move from toplev.c.
	(print_filtered_help): Access quiet_flag through opts pointer.
	(common_handle_option): Return early in the driver for some
	options.  Access in_lto_p, dwarf_version and
	warn_maybe_uninitialized through opts pointer.
	* toplev.c (in_lto_p): Move to common.opt.
	(debug_type_names): Move to opts.c.
	* Makefile.in (OBJS): Remove opts.o.
	(OBJS-libcommon-target): Add opts.o.
	(gcc.o): Update dependencies.

From-SVN: r175591
parent cc6aa100
2011-06-28 Joseph Myers <joseph@codesourcery.com>
* common.opt (in_lto_p): New Variable entry.
* flags.h (in_lto_p): Move to common.opt.
* gcc.c: Include params.h.
(set_option_handlers): Also use common_handle_option and
target_handle_option.
(main): Call global_init_params, finish_params and
init_options_struct.
* opts.c (debug_type_names): Move from toplev.c.
(print_filtered_help): Access quiet_flag through opts pointer.
(common_handle_option): Return early in the driver for some
options. Access in_lto_p, dwarf_version and
warn_maybe_uninitialized through opts pointer.
* toplev.c (in_lto_p): Move to common.opt.
(debug_type_names): Move to opts.c.
* Makefile.in (OBJS): Remove opts.o.
(OBJS-libcommon-target): Add opts.o.
(gcc.o): Update dependencies.
2011-06-28 Kai Tietz <ktietz@redhat.com> 2011-06-28 Kai Tietz <ktietz@redhat.com>
* tree-ssa-forwprop.c (simplify_bitwise_binary): Improve * tree-ssa-forwprop.c (simplify_bitwise_binary): Improve
......
...@@ -1354,7 +1354,6 @@ OBJS = \ ...@@ -1354,7 +1354,6 @@ OBJS = \
optabs.o \ optabs.o \
options-save.o \ options-save.o \
opts-global.o \ opts-global.o \
opts.o \
passes.o \ passes.o \
plugin.o \ plugin.o \
pointer-set.o \ pointer-set.o \
...@@ -1504,7 +1503,7 @@ OBJS-libcommon = diagnostic.o pretty-print.o intl.o input.o version.o ...@@ -1504,7 +1503,7 @@ OBJS-libcommon = diagnostic.o pretty-print.o intl.o input.o version.o
# Objects in libcommon-target.a, used by drivers and by the core # Objects in libcommon-target.a, used by drivers and by the core
# compiler and containing target-dependent code. # compiler and containing target-dependent code.
OBJS-libcommon-target = $(common_out_object_file) prefix.o params.o \ OBJS-libcommon-target = $(common_out_object_file) prefix.o params.o \
opts-common.o options.o vec.o hooks.o common/common-targhooks.o opts.o opts-common.o options.o vec.o hooks.o common/common-targhooks.o
# This lists all host objects for the front ends. # This lists all host objects for the front ends.
ALL_HOST_FRONTEND_OBJS = $(C_OBJS) \ ALL_HOST_FRONTEND_OBJS = $(C_OBJS) \
...@@ -2260,7 +2259,7 @@ DRIVER_DEFINES = \ ...@@ -2260,7 +2259,7 @@ DRIVER_DEFINES = \
gcc.o: gcc.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) intl.h multilib.h \ gcc.o: gcc.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) intl.h multilib.h \
Makefile $(lang_specs_files) specs.h prefix.h $(GCC_H) $(FLAGS_H) \ Makefile $(lang_specs_files) specs.h prefix.h $(GCC_H) $(FLAGS_H) \
configargs.h $(OBSTACK_H) $(OPTS_H) $(DIAGNOSTIC_H) $(VEC_H) configargs.h $(OBSTACK_H) $(OPTS_H) $(DIAGNOSTIC_H) $(VEC_H) $(PARAMS_H)
(SHLIB_LINK='$(SHLIB_LINK)'; \ (SHLIB_LINK='$(SHLIB_LINK)'; \
$(COMPILER) $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) \ $(COMPILER) $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) \
$(DRIVER_DEFINES) \ $(DRIVER_DEFINES) \
......
...@@ -37,6 +37,13 @@ int optimize_size ...@@ -37,6 +37,13 @@ int optimize_size
Variable Variable
int optimize_fast int optimize_fast
; True if this is the lto front end. This is used to disable gimple
; generation and lowering passes that are normally run on the output
; of a front end. These passes must be bypassed for lto since they
; have already been done before the gimple was written.
Variable
bool in_lto_p = false
; 0 means straightforward implementation of complex divide acceptable. ; 0 means straightforward implementation of complex divide acceptable.
; 1 means wide ranges of inputs must work for complex divide. ; 1 means wide ranges of inputs must work for complex divide.
; 2 means C99-like requirements for complex multiply and divide. ; 2 means C99-like requirements for complex multiply and divide.
......
/* Compilation switch flag definitions for GCC. /* Compilation switch flag definitions for GCC.
Copyright (C) 1987, 1988, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002, Copyright (C) 1987, 1988, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002,
2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
Free Software Foundation, Inc. Free Software Foundation, Inc.
This file is part of GCC. This file is part of GCC.
...@@ -34,13 +34,6 @@ extern const char *const debug_type_names[]; ...@@ -34,13 +34,6 @@ extern const char *const debug_type_names[];
extern void strip_off_ending (char *, int); extern void strip_off_ending (char *, int);
extern int base_of_path (const char *path, const char **base_out); extern int base_of_path (const char *path, const char **base_out);
/* True if this is the LTO front end (lto1). This is used to disable
gimple generation and lowering passes that are normally run on the
output of a front end. These passes must be bypassed for lto since
they have already been done before the gimple was written. */
extern bool in_lto_p;
/* Return true iff flags are set as if -ffast-math. */ /* Return true iff flags are set as if -ffast-math. */
extern bool fast_math_flags_set_p (const struct gcc_options *); extern bool fast_math_flags_set_p (const struct gcc_options *);
extern bool fast_math_flags_struct_set_p (struct cl_optimization *); extern bool fast_math_flags_struct_set_p (struct cl_optimization *);
......
...@@ -43,6 +43,7 @@ compilation is specified by a string called a "spec". */ ...@@ -43,6 +43,7 @@ compilation is specified by a string called a "spec". */
#include "diagnostic.h" #include "diagnostic.h"
#include "flags.h" #include "flags.h"
#include "opts.h" #include "opts.h"
#include "params.h"
#include "vec.h" #include "vec.h"
#include "filenames.h" #include "filenames.h"
...@@ -3532,9 +3533,13 @@ set_option_handlers (struct cl_option_handlers *handlers) ...@@ -3532,9 +3533,13 @@ set_option_handlers (struct cl_option_handlers *handlers)
handlers->unknown_option_callback = driver_unknown_option_callback; handlers->unknown_option_callback = driver_unknown_option_callback;
handlers->wrong_lang_callback = driver_wrong_lang_callback; handlers->wrong_lang_callback = driver_wrong_lang_callback;
handlers->post_handling_callback = driver_post_handling_callback; handlers->post_handling_callback = driver_post_handling_callback;
handlers->num_handlers = 1; handlers->num_handlers = 3;
handlers->handlers[0].handler = driver_handle_option; handlers->handlers[0].handler = driver_handle_option;
handlers->handlers[0].mask = CL_DRIVER; handlers->handlers[0].mask = CL_DRIVER;
handlers->handlers[1].handler = common_handle_option;
handlers->handlers[1].mask = CL_COMMON;
handlers->handlers[2].handler = target_handle_option;
handlers->handlers[2].mask = CL_TARGET;
} }
/* Create the vector `switches' and its contents. /* Create the vector `switches' and its contents.
...@@ -6156,7 +6161,11 @@ main (int argc, char **argv) ...@@ -6156,7 +6161,11 @@ main (int argc, char **argv)
if (argv != old_argv) if (argv != old_argv)
at_file_supplied = true; at_file_supplied = true;
global_options = global_options_init; /* Register the language-independent parameters. */
global_init_params ();
finish_params ();
init_options_struct (&global_options, &global_options_set);
decode_cmdline_options_to_array (argc, CONST_CAST2 (const char **, char **, decode_cmdline_options_to_array (argc, CONST_CAST2 (const char **, char **,
argv), argv),
......
...@@ -35,6 +35,12 @@ along with GCC; see the file COPYING3. If not see ...@@ -35,6 +35,12 @@ along with GCC; see the file COPYING3. If not see
#include "insn-attr-common.h" #include "insn-attr-common.h"
#include "common/common-target.h" #include "common/common-target.h"
/* Indexed by enum debug_info_type. */
const char *const debug_type_names[] =
{
"none", "stabs", "coff", "dwarf-2", "xcoff", "vms"
};
/* Parse the -femit-struct-debug-detailed option value /* Parse the -femit-struct-debug-detailed option value
and set the flag variables. */ and set the flag variables. */
...@@ -986,7 +992,7 @@ print_filtered_help (unsigned int include_flags, ...@@ -986,7 +992,7 @@ print_filtered_help (unsigned int include_flags,
/* With the -Q option enabled we change the descriptive text associated /* With the -Q option enabled we change the descriptive text associated
with an option to be an indication of its current setting. */ with an option to be an indication of its current setting. */
if (!quiet_flag) if (!opts->x_quiet_flag)
{ {
void *flag_var = option_flag_var (i, opts); void *flag_var = option_flag_var (i, opts);
...@@ -1246,6 +1252,9 @@ common_handle_option (struct gcc_options *opts, ...@@ -1246,6 +1252,9 @@ common_handle_option (struct gcc_options *opts,
unsigned int undoc_mask; unsigned int undoc_mask;
unsigned int i; unsigned int i;
if (lang_mask == CL_DRIVER)
break;;
undoc_mask = ((opts->x_verbose_flag | opts->x_extra_warnings) undoc_mask = ((opts->x_verbose_flag | opts->x_extra_warnings)
? 0 ? 0
: CL_UNDOCUMENTED); : CL_UNDOCUMENTED);
...@@ -1265,6 +1274,9 @@ common_handle_option (struct gcc_options *opts, ...@@ -1265,6 +1274,9 @@ common_handle_option (struct gcc_options *opts,
} }
case OPT__target_help: case OPT__target_help:
if (lang_mask == CL_DRIVER)
break;
print_specific_help (CL_TARGET, CL_UNDOCUMENTED, 0, opts, lang_mask); print_specific_help (CL_TARGET, CL_UNDOCUMENTED, 0, opts, lang_mask);
opts->x_exit_after_options = true; opts->x_exit_after_options = true;
break; break;
...@@ -1280,6 +1292,9 @@ common_handle_option (struct gcc_options *opts, ...@@ -1280,6 +1292,9 @@ common_handle_option (struct gcc_options *opts,
--help=target,^undocumented */ --help=target,^undocumented */
unsigned int exclude_flags = 0; unsigned int exclude_flags = 0;
if (lang_mask == CL_DRIVER)
break;
/* Walk along the argument string, parsing each word in turn. /* Walk along the argument string, parsing each word in turn.
The format is: The format is:
arg = [^]{word}[,{arg}] arg = [^]{word}[,{arg}]
...@@ -1390,6 +1405,9 @@ common_handle_option (struct gcc_options *opts, ...@@ -1390,6 +1405,9 @@ common_handle_option (struct gcc_options *opts,
} }
case OPT__version: case OPT__version:
if (lang_mask == CL_DRIVER)
break;
opts->x_exit_after_options = true; opts->x_exit_after_options = true;
break; break;
...@@ -1400,6 +1418,9 @@ common_handle_option (struct gcc_options *opts, ...@@ -1400,6 +1418,9 @@ common_handle_option (struct gcc_options *opts,
break; break;
case OPT_Werror_: case OPT_Werror_:
if (lang_mask == CL_DRIVER)
break;
enable_warning_as_error (arg, value, lang_mask, handlers, enable_warning_as_error (arg, value, lang_mask, handlers,
opts, opts_set, loc, dc); opts, opts_set, loc, dc);
break; break;
...@@ -1576,7 +1597,7 @@ common_handle_option (struct gcc_options *opts, ...@@ -1576,7 +1597,7 @@ common_handle_option (struct gcc_options *opts,
/* FIXME: Instrumentation we insert makes ipa-reference bitmaps /* FIXME: Instrumentation we insert makes ipa-reference bitmaps
quadratic. Disable the pass until better memory representation quadratic. Disable the pass until better memory representation
is done. */ is done. */
if (!opts_set->x_flag_ipa_reference && in_lto_p) if (!opts_set->x_flag_ipa_reference && opts->x_in_lto_p)
opts->x_flag_ipa_reference = false; opts->x_flag_ipa_reference = false;
break; break;
...@@ -1666,7 +1687,7 @@ common_handle_option (struct gcc_options *opts, ...@@ -1666,7 +1687,7 @@ common_handle_option (struct gcc_options *opts,
if (value < 2 || value > 4) if (value < 2 || value > 4)
error_at (loc, "dwarf version %d is not supported", value); error_at (loc, "dwarf version %d is not supported", value);
else else
dwarf_version = value; opts->x_dwarf_version = value;
set_debug_level (DWARF2_DEBUG, false, "", opts, opts_set, loc); set_debug_level (DWARF2_DEBUG, false, "", opts, opts_set, loc);
break; break;
...@@ -1713,7 +1734,7 @@ common_handle_option (struct gcc_options *opts, ...@@ -1713,7 +1734,7 @@ common_handle_option (struct gcc_options *opts,
case OPT_Wuninitialized: case OPT_Wuninitialized:
/* Also turn on maybe uninitialized warning. */ /* Also turn on maybe uninitialized warning. */
warn_maybe_uninitialized = value; opts->x_warn_maybe_uninitialized = value;
break; break;
default: default:
......
...@@ -125,13 +125,6 @@ unsigned int save_decoded_options_count; ...@@ -125,13 +125,6 @@ unsigned int save_decoded_options_count;
const struct gcc_debug_hooks *debug_hooks; const struct gcc_debug_hooks *debug_hooks;
/* True if this is the lto front end. This is used to disable
gimple generation and lowering passes that are normally run on the
output of a front end. These passes must be bypassed for lto since
they have already been done before the gimple was written. */
bool in_lto_p = false;
/* The FUNCTION_DECL for the function currently being compiled, /* The FUNCTION_DECL for the function currently being compiled,
or 0 if between functions. */ or 0 if between functions. */
tree current_function_decl; tree current_function_decl;
...@@ -658,12 +651,6 @@ compile_file (void) ...@@ -658,12 +651,6 @@ compile_file (void)
timevar_stop (TV_PHASE_GENERATE); timevar_stop (TV_PHASE_GENERATE);
} }
/* Indexed by enum debug_info_type. */
const char *const debug_type_names[] =
{
"none", "stabs", "coff", "dwarf-2", "xcoff", "vms"
};
/* Print version information to FILE. /* Print version information to FILE.
Each line begins with INDENT (for the case where FILE is the Each line begins with INDENT (for the case where FILE is the
assembler output file). */ assembler output file). */
......
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