OSDN Git Service

* common.opt (in_lto_p): New Variable entry.
authorjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 28 Jun 2011 17:00:59 +0000 (17:00 +0000)
committerjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 28 Jun 2011 17:00:59 +0000 (17:00 +0000)
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@175591 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/Makefile.in
gcc/common.opt
gcc/flags.h
gcc/gcc.c
gcc/opts.c
gcc/toplev.c

index 60bc9c6..2422d34 100644 (file)
@@ -1,3 +1,23 @@
+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>
 
        * tree-ssa-forwprop.c (simplify_bitwise_binary): Improve
index 0a2d927..fc96dda 100644 (file)
@@ -1354,7 +1354,6 @@ OBJS = \
        optabs.o \
        options-save.o \
        opts-global.o \
-       opts.o \
        passes.o \
        plugin.o \
        pointer-set.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
 # compiler and containing target-dependent code.
 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.
 ALL_HOST_FRONTEND_OBJS = $(C_OBJS) \
@@ -2260,7 +2259,7 @@ DRIVER_DEFINES = \
 
 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) \
-    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)'; \
        $(COMPILER) $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) \
   $(DRIVER_DEFINES) \
index d1f286f..f127936 100644 (file)
@@ -37,6 +37,13 @@ int optimize_size
 Variable
 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.
 ; 1 means wide ranges of inputs must work for complex divide.
 ; 2 means C99-like requirements for complex multiply and divide.
index 4104955..8cc6670 100644 (file)
@@ -1,6 +1,6 @@
 /* Compilation switch flag definitions for GCC.
    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.
 
 This file is part of GCC.
@@ -34,13 +34,6 @@ extern const char *const debug_type_names[];
 extern void strip_off_ending (char *, int);
 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.  */
 extern bool fast_math_flags_set_p (const struct gcc_options *);
 extern bool fast_math_flags_struct_set_p (struct cl_optimization *);
index eb917cd..2996de4 100644 (file)
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -43,6 +43,7 @@ compilation is specified by a string called a "spec".  */
 #include "diagnostic.h"
 #include "flags.h"
 #include "opts.h"
+#include "params.h"
 #include "vec.h"
 #include "filenames.h"
 
@@ -3532,9 +3533,13 @@ set_option_handlers (struct cl_option_handlers *handlers)
   handlers->unknown_option_callback = driver_unknown_option_callback;
   handlers->wrong_lang_callback = driver_wrong_lang_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].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.
@@ -6156,7 +6161,11 @@ main (int argc, char **argv)
   if (argv != old_argv)
     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 **,
                                                      argv),
index c3e7bc7..aa85ae5 100644 (file)
@@ -35,6 +35,12 @@ along with GCC; see the file COPYING3.  If not see
 #include "insn-attr-common.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
    and set the flag variables. */
 
@@ -986,7 +992,7 @@ print_filtered_help (unsigned int include_flags,
 
       /* With the -Q option enabled we change the descriptive text associated
         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);
 
@@ -1246,6 +1252,9 @@ common_handle_option (struct gcc_options *opts,
        unsigned int undoc_mask;
        unsigned int i;
 
+       if (lang_mask == CL_DRIVER)
+         break;;
+
        undoc_mask = ((opts->x_verbose_flag | opts->x_extra_warnings)
                      ? 0
                      : CL_UNDOCUMENTED);
@@ -1265,6 +1274,9 @@ common_handle_option (struct gcc_options *opts,
       }
 
     case OPT__target_help:
+      if (lang_mask == CL_DRIVER)
+       break;
+
       print_specific_help (CL_TARGET, CL_UNDOCUMENTED, 0, opts, lang_mask);
       opts->x_exit_after_options = true;
       break;
@@ -1280,6 +1292,9 @@ common_handle_option (struct gcc_options *opts,
           --help=target,^undocumented  */
        unsigned int exclude_flags = 0;
 
+       if (lang_mask == CL_DRIVER)
+         break;
+
        /* Walk along the argument string, parsing each word in turn.
           The format is:
           arg = [^]{word}[,{arg}]
@@ -1390,6 +1405,9 @@ common_handle_option (struct gcc_options *opts,
       }
 
     case OPT__version:
+      if (lang_mask == CL_DRIVER)
+       break;
+
       opts->x_exit_after_options = true;
       break;
 
@@ -1400,6 +1418,9 @@ common_handle_option (struct gcc_options *opts,
       break;
 
     case OPT_Werror_:
+      if (lang_mask == CL_DRIVER)
+       break;
+
       enable_warning_as_error (arg, value, lang_mask, handlers,
                               opts, opts_set, loc, dc);
       break;
@@ -1576,7 +1597,7 @@ common_handle_option (struct gcc_options *opts,
       /* FIXME: Instrumentation we insert makes ipa-reference bitmaps
         quadratic.  Disable the pass until better memory representation
         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;
       break;
 
@@ -1666,7 +1687,7 @@ common_handle_option (struct gcc_options *opts,
       if (value < 2 || value > 4)
        error_at (loc, "dwarf version %d is not supported", value);
       else
-       dwarf_version = value;
+       opts->x_dwarf_version = value;
       set_debug_level (DWARF2_DEBUG, false, "", opts, opts_set, loc);
       break;
 
@@ -1713,7 +1734,7 @@ common_handle_option (struct gcc_options *opts,
 
     case OPT_Wuninitialized:
       /* Also turn on maybe uninitialized warning.  */
-      warn_maybe_uninitialized = value;
+      opts->x_warn_maybe_uninitialized = value;
       break;
 
     default:
index 8b02b38..884994c 100644 (file)
@@ -125,13 +125,6 @@ unsigned int save_decoded_options_count;
 
 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,
    or 0 if between functions.  */
 tree current_function_decl;
@@ -658,12 +651,6 @@ compile_file (void)
   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.
    Each line begins with INDENT (for the case where FILE is the
    assembler output file).  */