Patchwork Move some option settings to finish_options

login
register
mail settings
Submitter Joseph S. Myers
Date May 11, 2011, 11:12 a.m.
Message ID <Pine.LNX.4.64.1105111104410.27411@digraph.polyomino.org.uk>
Download mbox | patch
Permalink /patch/95139/
State New
Headers show

Comments

Joseph S. Myers - May 11, 2011, 11:12 a.m.
This patch moves some option settings from process_options to 
finish_options, making them avoid global state in the process, in 
preparation for moving parts of the target option override hook to be 
called from finish_options as well.  (The idea is to minimize the amount 
of code in process_options above the call to 
targetm.target_option.override.  Reordering code in the course of 
splitting the struct-based code from the global-state code is unavoidable, 
but moving this code now reduces the amount of reordering involved.  I've 
checked the lang_hooks.post_options implementations and believe moving the 
target code past them should be safe.)

Bootstrapped with no regressions on x86_64-unknown-linux-gnu.  Applied to 
mainline.

2011-05-11  Joseph Myers  <joseph@codesourcery.com>

	* opts.c (finish_options): Move warning settings from
	process_options.
	* toplev.c (process_options): Move warning settings to
	finish_options.

Patch

Index: gcc/toplev.c
===================================================================
--- gcc/toplev.c	(revision 173620)
+++ gcc/toplev.c	(working copy)
@@ -1253,29 +1253,6 @@  process_options (void)
 
   maximum_field_alignment = initial_max_fld_align * BITS_PER_UNIT;
 
-  /* This replaces set_Wunused.  */
-  if (warn_unused_function == -1)
-    warn_unused_function = warn_unused;
-  if (warn_unused_label == -1)
-    warn_unused_label = warn_unused;
-  /* Wunused-parameter is enabled if both -Wunused -Wextra are enabled.  */
-  if (warn_unused_parameter == -1)
-    warn_unused_parameter = (warn_unused && extra_warnings);
-  if (warn_unused_variable == -1)
-    warn_unused_variable = warn_unused;
-  /* Wunused-but-set-parameter is enabled if both -Wunused -Wextra are
-     enabled.  */
-  if (warn_unused_but_set_parameter == -1)
-    warn_unused_but_set_parameter = (warn_unused && extra_warnings);
-  if (warn_unused_but_set_variable == -1)
-    warn_unused_but_set_variable = warn_unused;
-  if (warn_unused_value == -1)
-    warn_unused_value = warn_unused;
-
-  /* This replaces set_Wextra.  */
-  if (warn_uninitialized == -1)
-    warn_uninitialized = extra_warnings;
-
   /* Allow the front end to perform consistency checks and do further
      initialization based on the command line options.  This hook also
      sets the original filename if appropriate (e.g. foo.i -> foo.c)
Index: gcc/opts.c
===================================================================
--- gcc/opts.c	(revision 173620)
+++ gcc/opts.c	(working copy)
@@ -807,6 +807,31 @@  finish_options (struct gcc_options *opts
   if (!opts->x_flag_tree_vectorize || !opts->x_flag_tree_loop_if_convert)
     maybe_set_param_value (PARAM_MAX_STORES_TO_SINK, 0,
                            opts->x_param_values, opts_set->x_param_values);
+
+  /* This replaces set_Wunused.  */
+  if (opts->x_warn_unused_function == -1)
+    opts->x_warn_unused_function = opts->x_warn_unused;
+  if (opts->x_warn_unused_label == -1)
+    opts->x_warn_unused_label = opts->x_warn_unused;
+  /* Wunused-parameter is enabled if both -Wunused -Wextra are enabled.  */
+  if (opts->x_warn_unused_parameter == -1)
+    opts->x_warn_unused_parameter = (opts->x_warn_unused
+				     && opts->x_extra_warnings);
+  if (opts->x_warn_unused_variable == -1)
+    opts->x_warn_unused_variable = opts->x_warn_unused;
+  /* Wunused-but-set-parameter is enabled if both -Wunused -Wextra are
+     enabled.  */
+  if (opts->x_warn_unused_but_set_parameter == -1)
+    opts->x_warn_unused_but_set_parameter = (opts->x_warn_unused
+					     && opts->x_extra_warnings);
+  if (opts->x_warn_unused_but_set_variable == -1)
+    opts->x_warn_unused_but_set_variable = opts->x_warn_unused;
+  if (opts->x_warn_unused_value == -1)
+    opts->x_warn_unused_value = opts->x_warn_unused;
+
+  /* This replaces set_Wextra.  */
+  if (opts->x_warn_uninitialized == -1)
+    opts->x_warn_uninitialized = opts->x_extra_warnings;
 }
 
 #define LEFT_COLUMN	27