OSDN Git Service

* params.c (set_param_value_internal): New.
authorjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 11 Oct 2010 12:28:40 +0000 (12:28 +0000)
committerjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 11 Oct 2010 12:28:40 +0000 (12:28 +0000)
(set_param_value): Use set_param_value_internal.
(maybe_set_param_value, set_default_param_value): New.
* params.h (PARAM_VALUE, PARAM_SET_P): Make into rvalues.
(maybe_set_param_value, set_default_param_value): Declare.
* config/arm/arm.c (arm_option_override): Use
maybe_set_param_value.
* config/i386/i386.c (ix86_option_override_internal): Use
maybe_set_param_value.
* config/ia64/ia64.c (ia64_option_default_params,
TARGET_OPTION_DEFAULT_PARAMS): New.
(ia64_option_optimization): Move some code to
ia64_option_default_params.
* config/picochip/picochip.c (picochip_option_override): Use
maybe_set_param_value.
* config/rs6000/rs6000.c (rs6000_option_default_params,
TARGET_OPTION_DEFAULT_PARAMS): New.
(rs6000_option_override_internal): Use maybe_set_param_value.
(rs6000_option_optimization): Move some code to
rs6000_option_default_params.
* config/s390/s390.c (s390_option_override): Use
maybe_set_param_value.
* config/sh/sh.c (sh_option_default_params,
TARGET_OPTION_DEFAULT_PARAMS): New.
(sh_option_optimization): Move some code to
sh_option_default_params.
* config/sparc/sparc.c (sparc_option_override): Use
maybe_set_param_value.
* config/spu/spu.c (spu_option_default_params,
TARGET_OPTION_DEFAULT_PARAMS): New.
(spu_option_optimization): Move some code to
spu_option_default_params.
(spu_option_override): Use maybe_set_param_value.
* doc/tm.texi.in (TARGET_OPTION_DEFAULT_PARAMS): New @hook.
* doc/tm.texi: Regenerate.
* ggc-common.c (init_ggc_heuristics): Use set_default_param_value.
* opts.c (init_options_once): Use PARAM_VALUE not direct access to
compiler_params.
(default_options_optimization): Use maybe_set_param_value.
(finish_options): Use maybe_set_param_value.
* target.def (target_option.default_params): New hook.
* toplev.c (general_init): Call
targetm.target_option.default_params.

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

18 files changed:
gcc/ChangeLog
gcc/config/arm/arm.c
gcc/config/i386/i386.c
gcc/config/ia64/ia64.c
gcc/config/picochip/picochip.c
gcc/config/rs6000/rs6000.c
gcc/config/s390/s390.c
gcc/config/sh/sh.c
gcc/config/sparc/sparc.c
gcc/config/spu/spu.c
gcc/doc/tm.texi
gcc/doc/tm.texi.in
gcc/ggc-common.c
gcc/opts.c
gcc/params.c
gcc/params.h
gcc/target.def
gcc/toplev.c

index fd0bc36..19312f3 100644 (file)
@@ -1,3 +1,49 @@
+2010-10-11  Joseph Myers  <joseph@codesourcery.com>
+
+       * params.c (set_param_value_internal): New.
+       (set_param_value): Use set_param_value_internal.
+       (maybe_set_param_value, set_default_param_value): New.
+       * params.h (PARAM_VALUE, PARAM_SET_P): Make into rvalues.
+       (maybe_set_param_value, set_default_param_value): Declare.
+       * config/arm/arm.c (arm_option_override): Use
+       maybe_set_param_value.
+       * config/i386/i386.c (ix86_option_override_internal): Use
+       maybe_set_param_value.
+       * config/ia64/ia64.c (ia64_option_default_params,
+       TARGET_OPTION_DEFAULT_PARAMS): New.
+       (ia64_option_optimization): Move some code to
+       ia64_option_default_params.
+       * config/picochip/picochip.c (picochip_option_override): Use
+       maybe_set_param_value.
+       * config/rs6000/rs6000.c (rs6000_option_default_params,
+       TARGET_OPTION_DEFAULT_PARAMS): New.
+       (rs6000_option_override_internal): Use maybe_set_param_value.
+       (rs6000_option_optimization): Move some code to
+       rs6000_option_default_params.
+       * config/s390/s390.c (s390_option_override): Use
+       maybe_set_param_value.
+       * config/sh/sh.c (sh_option_default_params,
+       TARGET_OPTION_DEFAULT_PARAMS): New.
+       (sh_option_optimization): Move some code to
+       sh_option_default_params.
+       * config/sparc/sparc.c (sparc_option_override): Use
+       maybe_set_param_value.
+       * config/spu/spu.c (spu_option_default_params,
+       TARGET_OPTION_DEFAULT_PARAMS): New.
+       (spu_option_optimization): Move some code to
+       spu_option_default_params.
+       (spu_option_override): Use maybe_set_param_value.
+       * doc/tm.texi.in (TARGET_OPTION_DEFAULT_PARAMS): New @hook.
+       * doc/tm.texi: Regenerate.
+       * ggc-common.c (init_ggc_heuristics): Use set_default_param_value.
+       * opts.c (init_options_once): Use PARAM_VALUE not direct access to
+       compiler_params.
+       (default_options_optimization): Use maybe_set_param_value.
+       (finish_options): Use maybe_set_param_value.
+       * target.def (target_option.default_params): New hook.
+       * toplev.c (general_init): Call
+       targetm.target_option.default_params.
+
 2010-10-11  Ira Rosen  <irar@il.ibm.com>
 
        PR tree-optimization/45902
 2010-10-11  Ira Rosen  <irar@il.ibm.com>
 
        PR tree-optimization/45902
index 8ad312e..855f39e 100644 (file)
@@ -1953,13 +1953,12 @@ arm_option_override (void)
       flag_reorder_blocks = 1;
     }
 
       flag_reorder_blocks = 1;
     }
 
-  if (!PARAM_SET_P (PARAM_GCSE_UNRESTRICTED_COST)
-      && flag_pic)
+  if (flag_pic)
     /* Hoisting PIC address calculations more aggressively provides a small,
        but measurable, size reduction for PIC code.  Therefore, we decrease
        the bar for unrestricted expression hoisting to the cost of PIC address
        calculation, which is 2 instructions.  */
     /* Hoisting PIC address calculations more aggressively provides a small,
        but measurable, size reduction for PIC code.  Therefore, we decrease
        the bar for unrestricted expression hoisting to the cost of PIC address
        calculation, which is 2 instructions.  */
-    set_param_value ("gcse-unrestricted-cost", 2);
+    maybe_set_param_value (PARAM_GCSE_UNRESTRICTED_COST, 2);
 
   /* Register global variables with the garbage collector.  */
   arm_add_gc_roots ();
 
   /* Register global variables with the garbage collector.  */
   arm_add_gc_roots ();
index f6c4eb4..4db819e 100644 (file)
@@ -3632,15 +3632,11 @@ ix86_option_override_internal (bool main_args_p)
   if (!TARGET_SCHEDULE)
     flag_schedule_insns_after_reload = flag_schedule_insns = 0;
 
   if (!TARGET_SCHEDULE)
     flag_schedule_insns_after_reload = flag_schedule_insns = 0;
 
-  if (!PARAM_SET_P (PARAM_SIMULTANEOUS_PREFETCHES))
-    set_param_value ("simultaneous-prefetches",
-                    ix86_cost->simultaneous_prefetches);
-  if (!PARAM_SET_P (PARAM_L1_CACHE_LINE_SIZE))
-    set_param_value ("l1-cache-line-size", ix86_cost->prefetch_block);
-  if (!PARAM_SET_P (PARAM_L1_CACHE_SIZE))
-    set_param_value ("l1-cache-size", ix86_cost->l1_cache_size);
-  if (!PARAM_SET_P (PARAM_L2_CACHE_SIZE))
-    set_param_value ("l2-cache-size", ix86_cost->l2_cache_size);
+  maybe_set_param_value (PARAM_SIMULTANEOUS_PREFETCHES,
+                        ix86_cost->simultaneous_prefetches);
+  maybe_set_param_value (PARAM_L1_CACHE_LINE_SIZE, ix86_cost->prefetch_block);
+  maybe_set_param_value (PARAM_L1_CACHE_SIZE, ix86_cost->l1_cache_size);
+  maybe_set_param_value (PARAM_L2_CACHE_SIZE, ix86_cost->l2_cache_size);
 
   /* Enable sw prefetching at -O3 for CPUS that prefetching is helpful.  */
   if (flag_prefetch_loop_arrays < 0
 
   /* Enable sw prefetching at -O3 for CPUS that prefetching is helpful.  */
   if (flag_prefetch_loop_arrays < 0
index d272860..f7489f9 100644 (file)
@@ -203,6 +203,7 @@ static rtx gen_fr_restore_x (rtx, rtx, rtx);
 
 static void ia64_option_override (void);
 static void ia64_option_optimization (int, int);
 
 static void ia64_option_override (void);
 static void ia64_option_optimization (int, int);
+static void ia64_option_default_params (void);
 static bool ia64_can_eliminate (const int, const int);
 static enum machine_mode hfa_element_mode (const_tree, bool);
 static void ia64_setup_incoming_varargs (CUMULATIVE_ARGS *, enum machine_mode,
 static bool ia64_can_eliminate (const int, const int);
 static enum machine_mode hfa_element_mode (const_tree, bool);
 static void ia64_setup_incoming_varargs (CUMULATIVE_ARGS *, enum machine_mode,
@@ -372,6 +373,8 @@ static const struct attribute_spec ia64_attribute_table[] =
 #define TARGET_OPTION_OVERRIDE ia64_option_override
 #undef TARGET_OPTION_OPTIMIZATION
 #define TARGET_OPTION_OPTIMIZATION ia64_option_optimization
 #define TARGET_OPTION_OVERRIDE ia64_option_override
 #undef TARGET_OPTION_OPTIMIZATION
 #define TARGET_OPTION_OPTIMIZATION ia64_option_optimization
+#undef TARGET_OPTION_DEFAULT_PARAMS
+#define TARGET_OPTION_DEFAULT_PARAMS ia64_option_default_params
 
 #undef TARGET_ASM_FUNCTION_PROLOGUE
 #define TARGET_ASM_FUNCTION_PROLOGUE ia64_output_function_prologue
 
 #undef TARGET_ASM_FUNCTION_PROLOGUE
 #define TARGET_ASM_FUNCTION_PROLOGUE ia64_output_function_prologue
@@ -10839,15 +10842,20 @@ ia64_option_optimization (int level ATTRIBUTE_UNUSED,
 #ifdef SUBTARGET_OPTIMIZATION_OPTIONS
   SUBTARGET_OPTIMIZATION_OPTIONS;
 #endif
 #ifdef SUBTARGET_OPTIMIZATION_OPTIONS
   SUBTARGET_OPTIMIZATION_OPTIONS;
 #endif
+}
 
 
+/* Implement TARGET_OPTION_DEFAULT_PARAMS.  */
+static void
+ia64_option_default_params (void)
+{
   /* Let the scheduler form additional regions.  */
   /* Let the scheduler form additional regions.  */
-  set_param_value ("max-sched-extend-regions-iters", 2);
+  set_default_param_value (PARAM_MAX_SCHED_EXTEND_REGIONS_ITERS, 2);
 
   /* Set the default values for cache-related parameters.  */
 
   /* Set the default values for cache-related parameters.  */
-  set_param_value ("simultaneous-prefetches", 6);
-  set_param_value ("l1-cache-line-size", 32);
+  set_default_param_value (PARAM_SIMULTANEOUS_PREFETCHES, 6);
+  set_default_param_value (PARAM_L1_CACHE_LINE_SIZE, 32);
 
 
-  set_param_value("sched-mem-true-dep-cost", 4);
+  set_default_param_value (PARAM_SCHED_MEM_TRUE_DEP_COST, 4);
 }
 
 /* HP-UX version_id attribute.
 }
 
 /* HP-UX version_id attribute.
index 9656583..b3b3e3b 100644 (file)
@@ -342,10 +342,10 @@ picochip_option_override (void)
   /* If we are optimizing for stack, dont let inliner to inline functions
      that could potentially increase stack size.*/
    if (flag_conserve_stack)
   /* If we are optimizing for stack, dont let inliner to inline functions
      that could potentially increase stack size.*/
    if (flag_conserve_stack)
-   {
-     PARAM_VALUE (PARAM_LARGE_STACK_FRAME) = 0;
-     PARAM_VALUE (PARAM_STACK_FRAME_GROWTH) = 0;
-   }
+     {
+       maybe_set_param_value (PARAM_LARGE_STACK_FRAME, 0);
+       maybe_set_param_value (PARAM_STACK_FRAME_GROWTH, 0);
+     }
 
   /* Turn off the elimination of unused types. The elaborator
      generates various interesting types to represent constants,
 
   /* Turn off the elimination of unused types. The elaborator
      generates various interesting types to represent constants,
index 91b2612..cd1c8cc 100644 (file)
@@ -1137,6 +1137,7 @@ static rtx altivec_expand_vec_ext_builtin (tree, rtx);
 static int get_element_number (tree, tree);
 static void rs6000_option_override (void);
 static void rs6000_option_optimization (int, int);
 static int get_element_number (tree, tree);
 static void rs6000_option_override (void);
 static void rs6000_option_optimization (int, int);
+static void rs6000_option_default_params (void);
 static bool rs6000_handle_option (size_t, const char *, int);
 static void rs6000_parse_tls_size_option (void);
 static void rs6000_parse_yes_no_option (const char *, const char *, int *);
 static bool rs6000_handle_option (size_t, const char *, int);
 static void rs6000_parse_tls_size_option (void);
 static void rs6000_parse_yes_no_option (const char *, const char *, int *);
@@ -1604,6 +1605,9 @@ static const struct attribute_spec rs6000_attribute_table[] =
 #undef TARGET_OPTION_OPTIMIZATION
 #define TARGET_OPTION_OPTIMIZATION rs6000_option_optimization
 
 #undef TARGET_OPTION_OPTIMIZATION
 #define TARGET_OPTION_OPTIMIZATION rs6000_option_optimization
 
+#undef TARGET_OPTION_DEFAULT_PARAMS
+#define TARGET_OPTION_DEFAULT_PARAMS rs6000_option_default_params
+
 #undef TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION
 #define TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION \
   rs6000_builtin_vectorized_function
 #undef TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION
 #define TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION \
   rs6000_builtin_vectorized_function
@@ -3154,15 +3158,12 @@ rs6000_option_override_internal (const char *default_cpu)
        gcc_unreachable ();
       }
 
        gcc_unreachable ();
       }
 
-  if (!PARAM_SET_P (PARAM_SIMULTANEOUS_PREFETCHES))
-    set_param_value ("simultaneous-prefetches",
-                    rs6000_cost->simultaneous_prefetches);
-  if (!PARAM_SET_P (PARAM_L1_CACHE_SIZE))
-    set_param_value ("l1-cache-size", rs6000_cost->l1_cache_size);
-  if (!PARAM_SET_P (PARAM_L1_CACHE_LINE_SIZE))
-    set_param_value ("l1-cache-line-size", rs6000_cost->cache_line_size);
-  if (!PARAM_SET_P (PARAM_L2_CACHE_SIZE))
-    set_param_value ("l2-cache-size", rs6000_cost->l2_cache_size);
+  maybe_set_param_value (PARAM_SIMULTANEOUS_PREFETCHES,
+                        rs6000_cost->simultaneous_prefetches);
+  maybe_set_param_value (PARAM_L1_CACHE_SIZE, rs6000_cost->l1_cache_size);
+  maybe_set_param_value (PARAM_L1_CACHE_LINE_SIZE,
+                        rs6000_cost->cache_line_size);
+  maybe_set_param_value (PARAM_L2_CACHE_SIZE, rs6000_cost->l2_cache_size);
 
   /* If using typedef char *va_list, signal that __builtin_va_start (&ap, 0)
      can be optimized to ap = __builtin_next_arg (0).  */
 
   /* If using typedef char *va_list, signal that __builtin_va_start (&ap, 0)
      can be optimized to ap = __builtin_next_arg (0).  */
@@ -3681,9 +3682,6 @@ rs6000_option_optimization (int level ATTRIBUTE_UNUSED,
        avoid calling them when that's the only reason we would.  */
     flag_errno_math = 0;
 
        avoid calling them when that's the only reason we would.  */
     flag_errno_math = 0;
 
-  /* Double growth factor to counter reduced min jump length.  */
-  set_param_value ("max-grow-copy-bb-insns", 16);
-
   /* Enable section anchors by default.
      Skip section anchors for Objective C and Objective C++
      until front-ends fixed.  */
   /* Enable section anchors by default.
      Skip section anchors for Objective C and Objective C++
      until front-ends fixed.  */
@@ -3691,6 +3689,15 @@ rs6000_option_optimization (int level ATTRIBUTE_UNUSED,
     flag_section_anchors = 2;
 }
 
     flag_section_anchors = 2;
 }
 
+/* Implement TARGET_OPTION_DEFAULT_PARAMS.  */
+
+static void
+rs6000_option_default_params (void)
+{
+  /* Double growth factor to counter reduced min jump length.  */
+  set_default_param_value (PARAM_MAX_GROW_COPY_BB_INSNS, 16);
+}
+
 static enum fpu_type_t
 rs6000_parse_fpu_option (const char *option)
 {
 static enum fpu_type_t
 rs6000_parse_fpu_option (const char *option)
 {
index e2d3851..04fcee2 100644 (file)
@@ -1687,30 +1687,22 @@ s390_option_override (void)
   if (s390_tune == PROCESSOR_2097_Z10
       || s390_tune == PROCESSOR_2817_Z196)
     {
   if (s390_tune == PROCESSOR_2097_Z10
       || s390_tune == PROCESSOR_2817_Z196)
     {
-      if (!PARAM_SET_P (PARAM_MAX_UNROLLED_INSNS))
-       set_param_value ("max-unrolled-insns", 100);
-      if (!PARAM_SET_P (PARAM_MAX_UNROLL_TIMES))
-       set_param_value ("max-unroll-times", 32);
-      if (!PARAM_SET_P (PARAM_MAX_COMPLETELY_PEELED_INSNS))
-       set_param_value ("max-completely-peeled-insns", 2000);
-      if (!PARAM_SET_P (PARAM_MAX_COMPLETELY_PEEL_TIMES))
-       set_param_value ("max-completely-peel-times", 64);
+      maybe_set_param_value (PARAM_MAX_UNROLLED_INSNS, 100);
+      maybe_set_param_value (PARAM_MAX_UNROLL_TIMES, 32);
+      maybe_set_param_value (PARAM_MAX_COMPLETELY_PEELED_INSNS, 2000);
+      maybe_set_param_value (PARAM_MAX_COMPLETELY_PEEL_TIMES, 64);
     }
 
   set_param_value ("max-pending-list-length", 256);
   /* values for loop prefetching */
   set_param_value ("l1-cache-line-size", 256);
     }
 
   set_param_value ("max-pending-list-length", 256);
   /* values for loop prefetching */
   set_param_value ("l1-cache-line-size", 256);
-  if (!PARAM_SET_P (PARAM_L1_CACHE_SIZE))
-    set_param_value ("l1-cache-size", 128);
+  maybe_set_param_value (PARAM_L1_CACHE_SIZE, 128);
   /* s390 has more than 2 levels and the size is much larger.  Since
      we are always running virtualized assume that we only get a small
      part of the caches above l1.  */
   /* s390 has more than 2 levels and the size is much larger.  Since
      we are always running virtualized assume that we only get a small
      part of the caches above l1.  */
-  if (!PARAM_SET_P (PARAM_L2_CACHE_SIZE))
-    set_param_value ("l2-cache-size", 1500);
-  if (!PARAM_SET_P (PARAM_PREFETCH_MIN_INSN_TO_MEM_RATIO))
-    set_param_value ("prefetch-min-insn-to-mem-ratio", 2);
-  if (!PARAM_SET_P (PARAM_SIMULTANEOUS_PREFETCHES))
-    set_param_value ("simultaneous-prefetches", 6);
+  maybe_set_param_value (PARAM_L2_CACHE_SIZE, 1500);
+  maybe_set_param_value (PARAM_PREFETCH_MIN_INSN_TO_MEM_RATIO, 2);
+  maybe_set_param_value (PARAM_SIMULTANEOUS_PREFETCHES, 6);
 
   /* This cannot reside in s390_option_optimization since HAVE_prefetch
      requires the arch flags to be evaluated already.  Since prefetching
 
   /* This cannot reside in s390_option_optimization since HAVE_prefetch
      requires the arch flags to be evaluated already.  Since prefetching
index 1c201bb..53b70ec 100644 (file)
@@ -184,6 +184,7 @@ static rtx gen_block_redirect (rtx, int, int);
 static void sh_reorg (void);
 static void sh_option_override (void);
 static void sh_option_optimization (int, int);
 static void sh_reorg (void);
 static void sh_option_override (void);
 static void sh_option_optimization (int, int);
+static void sh_option_default_params (void);
 static void output_stack_adjust (int, rtx, int, HARD_REG_SET *, bool);
 static rtx frame_insn (rtx);
 static rtx push (int);
 static void output_stack_adjust (int, rtx, int, HARD_REG_SET *, bool);
 static rtx frame_insn (rtx);
 static rtx push (int);
@@ -342,6 +343,8 @@ static const struct attribute_spec sh_attribute_table[] =
 #define TARGET_OPTION_OVERRIDE sh_option_override
 #undef TARGET_OPTION_OPTIMIZATION
 #define TARGET_OPTION_OPTIMIZATION sh_option_optimization
 #define TARGET_OPTION_OVERRIDE sh_option_override
 #undef TARGET_OPTION_OPTIMIZATION
 #define TARGET_OPTION_OPTIMIZATION sh_option_optimization
+#undef TARGET_OPTION_DEFAULT_PARAMS
+#define TARGET_OPTION_DEFAULT_PARAMS sh_option_default_params
 
 #undef TARGET_PRINT_OPERAND
 #define TARGET_PRINT_OPERAND sh_print_operand
 
 #undef TARGET_PRINT_OPERAND
 #define TARGET_PRINT_OPERAND sh_print_operand
@@ -731,8 +734,13 @@ sh_option_optimization (int level, int size)
      the user explicitly requested this to be on or off.  */
   if (flag_schedule_insns > 0)
     flag_schedule_insns = 2;
      the user explicitly requested this to be on or off.  */
   if (flag_schedule_insns > 0)
     flag_schedule_insns = 2;
+}
 
 
-  set_param_value ("simultaneous-prefetches", 2);
+/* Implement TARGET_OPTION_DEFAULT_PARAMS.  */
+static void
+sh_option_default_params (void)
+{
+  set_default_param_value (PARAM_SIMULTANEOUS_PREFETCHES, 2);
 }
 
 /* Implement TARGET_OPTION_OVERRIDE macro.  Validate and override 
 }
 
 /* Implement TARGET_OPTION_OVERRIDE macro.  Validate and override 
index 44145ef..6807301 100644 (file)
@@ -916,21 +916,19 @@ sparc_option_override (void)
     target_flags |= MASK_LONG_DOUBLE_128;
 #endif
 
     target_flags |= MASK_LONG_DOUBLE_128;
 #endif
 
-  if (!PARAM_SET_P (PARAM_SIMULTANEOUS_PREFETCHES))
-    set_param_value ("simultaneous-prefetches",
-                    ((sparc_cpu == PROCESSOR_ULTRASPARC
-                      || sparc_cpu == PROCESSOR_NIAGARA
-                      || sparc_cpu == PROCESSOR_NIAGARA2)
-                     ? 2
-                     : (sparc_cpu == PROCESSOR_ULTRASPARC3
-                        ? 8 : 3)));
-  if (!PARAM_SET_P (PARAM_L1_CACHE_LINE_SIZE))
-    set_param_value ("l1-cache-line-size",
-                    ((sparc_cpu == PROCESSOR_ULTRASPARC
-                      || sparc_cpu == PROCESSOR_ULTRASPARC3
-                      || sparc_cpu == PROCESSOR_NIAGARA
-                      || sparc_cpu == PROCESSOR_NIAGARA2)
-                     ? 64 : 32));
+  maybe_set_param_value (PARAM_SIMULTANEOUS_PREFETCHES,
+                        ((sparc_cpu == PROCESSOR_ULTRASPARC
+                          || sparc_cpu == PROCESSOR_NIAGARA
+                          || sparc_cpu == PROCESSOR_NIAGARA2)
+                         ? 2
+                         : (sparc_cpu == PROCESSOR_ULTRASPARC3
+                            ? 8 : 3)));
+  maybe_set_param_value (PARAM_L1_CACHE_LINE_SIZE,
+                        ((sparc_cpu == PROCESSOR_ULTRASPARC
+                          || sparc_cpu == PROCESSOR_ULTRASPARC3
+                          || sparc_cpu == PROCESSOR_NIAGARA
+                          || sparc_cpu == PROCESSOR_NIAGARA2)
+                         ? 64 : 32));
 }
 \f
 /* Miscellaneous utilities.  */
 }
 \f
 /* Miscellaneous utilities.  */
index 36c48ee..9bc78e8 100644 (file)
@@ -151,6 +151,7 @@ char regs_ever_allocated[FIRST_PSEUDO_REGISTER];
 /*  Prototypes and external defs.  */
 static void spu_option_override (void);
 static void spu_option_optimization (int, int);
 /*  Prototypes and external defs.  */
 static void spu_option_override (void);
 static void spu_option_optimization (int, int);
+static void spu_option_default_params (void);
 static void spu_init_builtins (void);
 static tree spu_builtin_decl (unsigned, bool);
 static bool spu_scalar_mode_supported_p (enum machine_mode mode);
 static void spu_init_builtins (void);
 static tree spu_builtin_decl (unsigned, bool);
 static bool spu_scalar_mode_supported_p (enum machine_mode mode);
@@ -482,6 +483,9 @@ static const struct attribute_spec spu_attribute_table[] =
 #undef TARGET_OPTION_OPTIMIZATION
 #define TARGET_OPTION_OPTIMIZATION spu_option_optimization
 
 #undef TARGET_OPTION_OPTIMIZATION
 #define TARGET_OPTION_OPTIMIZATION spu_option_optimization
 
+#undef TARGET_OPTION_DEFAULT_PARAMS
+#define TARGET_OPTION_DEFAULT_PARAMS spu_option_default_params
+
 #undef TARGET_EXCEPT_UNWIND_INFO
 #define TARGET_EXCEPT_UNWIND_INFO  sjlj_except_unwind_info
 
 #undef TARGET_EXCEPT_UNWIND_INFO
 #define TARGET_EXCEPT_UNWIND_INFO  sjlj_except_unwind_info
 
@@ -490,23 +494,27 @@ struct gcc_target targetm = TARGET_INITIALIZER;
 static void
 spu_option_optimization (int level ATTRIBUTE_UNUSED, int size ATTRIBUTE_UNUSED)
 {
 static void
 spu_option_optimization (int level ATTRIBUTE_UNUSED, int size ATTRIBUTE_UNUSED)
 {
-  /* Override some of the default param values.  With so many registers
-     larger values are better for these params.  */
-  MAX_PENDING_LIST_LENGTH = 128;
-
   /* With so many registers this is better on by default. */
   flag_rename_registers = 1;
 }
 
   /* With so many registers this is better on by default. */
   flag_rename_registers = 1;
 }
 
+/* Implement TARGET_OPTION_DEFAULT_PARAMS.  */
+static void
+spu_option_default_params (void)
+{
+  /* Override some of the default param values.  With so many registers
+     larger values are better for these params.  */
+  set_default_param_value (PARAM_MAX_PENDING_LIST_LENGTH, 128);
+}
+
 /* Implement TARGET_OPTION_OVERRIDE.  */
 static void
 spu_option_override (void)
 {
   /* Small loops will be unpeeled at -O3.  For SPU it is more important
      to keep code small by default.  */
 /* Implement TARGET_OPTION_OVERRIDE.  */
 static void
 spu_option_override (void)
 {
   /* Small loops will be unpeeled at -O3.  For SPU it is more important
      to keep code small by default.  */
-  if (!flag_unroll_loops && !flag_peel_loops
-      && !PARAM_SET_P (PARAM_MAX_COMPLETELY_PEEL_TIMES))
-    PARAM_VALUE (PARAM_MAX_COMPLETELY_PEEL_TIMES) = 1;
+  if (!flag_unroll_loops && !flag_peel_loops)
+    maybe_set_param_value (PARAM_MAX_COMPLETELY_PEEL_TIMES, 1);
 
   flag_omit_frame_pointer = 1;
 
 
   flag_omit_frame_pointer = 1;
 
index faa7250..f98176a 100644 (file)
@@ -812,6 +812,10 @@ this hook!}  The debugging options are not supposed to alter the
 generated code.
 @end deftypefn
 
 generated code.
 @end deftypefn
 
+@deftypefn {Target Hook} void TARGET_OPTION_DEFAULT_PARAMS (void)
+Set target-dependent default values for @option{--param} settings, using calls to @code{set_default_param_value}.
+@end deftypefn
+
 @deftypefn {Target Hook} void TARGET_HELP (void)
 This hook is called in response to the user invoking
 @option{--target-help} on the command line.  It gives the target a
 @deftypefn {Target Hook} void TARGET_HELP (void)
 This hook is called in response to the user invoking
 @option{--target-help} on the command line.  It gives the target a
index cdd9a22..41d5aee 100644 (file)
@@ -812,6 +812,8 @@ this hook!}  The debugging options are not supposed to alter the
 generated code.
 @end deftypefn
 
 generated code.
 @end deftypefn
 
+@hook TARGET_OPTION_DEFAULT_PARAMS
+
 @hook TARGET_HELP
 This hook is called in response to the user invoking
 @option{--target-help} on the command line.  It gives the target a
 @hook TARGET_HELP
 This hook is called in response to the user invoking
 @option{--target-help} on the command line.  It gives the target a
index 5b66bb4..cf38933 100644 (file)
@@ -857,8 +857,8 @@ void
 init_ggc_heuristics (void)
 {
 #if !defined ENABLE_GC_CHECKING && !defined ENABLE_GC_ALWAYS_COLLECT
 init_ggc_heuristics (void)
 {
 #if !defined ENABLE_GC_CHECKING && !defined ENABLE_GC_ALWAYS_COLLECT
-  set_param_value ("ggc-min-expand", ggc_min_expand_heuristic ());
-  set_param_value ("ggc-min-heapsize", ggc_min_heapsize_heuristic ());
+  set_default_param_value (GGC_MIN_EXPAND, ggc_min_expand_heuristic ());
+  set_default_param_value (GGC_MIN_HEAPSIZE, ggc_min_heapsize_heuristic ());
 #endif
 }
 
 #endif
 }
 
index efee21e..38f2faa 100644 (file)
@@ -669,11 +669,11 @@ init_options_once (void)
 
   /* Save initial values of parameters we reset.  */
   initial_min_crossjump_insns
 
   /* Save initial values of parameters we reset.  */
   initial_min_crossjump_insns
-    = compiler_params[PARAM_MIN_CROSSJUMP_INSNS].value;
+    = PARAM_VALUE (PARAM_MIN_CROSSJUMP_INSNS);
   initial_max_fields_for_field_sensitive
   initial_max_fields_for_field_sensitive
-    = compiler_params[PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE].value;
+    = PARAM_VALUE (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE);
   initial_loop_invariant_max_bbs_in_loop
   initial_loop_invariant_max_bbs_in_loop
-    = compiler_params[PARAM_LOOP_INVARIANT_MAX_BBS_IN_LOOP].value;
+    = PARAM_VALUE (PARAM_LOOP_INVARIANT_MAX_BBS_IN_LOOP);
 }
 
 /* Initialize OPTS and OPTS_SET before using them in parsing options.  */
 }
 
 /* Initialize OPTS and OPTS_SET before using them in parsing options.  */
@@ -853,12 +853,12 @@ default_options_optimization (struct gcc_options *opts,
   flag_ipa_sra = opt2;
 
   /* Track fields in field-sensitive alias analysis.  */
   flag_ipa_sra = opt2;
 
   /* Track fields in field-sensitive alias analysis.  */
-  set_param_value ("max-fields-for-field-sensitive",
-                  (opt2) ? 100 : initial_max_fields_for_field_sensitive);
+  maybe_set_param_value (PARAM_MAX_FIELDS_FOR_FIELD_SENSITIVE,
+                        opt2 ? 100 : initial_max_fields_for_field_sensitive);
 
   /* For -O1 only do loop invariant motion for very small loops.  */
 
   /* For -O1 only do loop invariant motion for very small loops.  */
-  set_param_value ("loop-invariant-max-bbs-in-loop",
-                  (opt2) ? initial_loop_invariant_max_bbs_in_loop : 1000);
+  maybe_set_param_value (PARAM_LOOP_INVARIANT_MAX_BBS_IN_LOOP,
+                        opt2 ? initial_loop_invariant_max_bbs_in_loop : 1000);
 
   /* -O3 optimizations.  */
   opt3 = (optimize >= 3);
 
   /* -O3 optimizations.  */
   opt3 = (optimize >= 3);
@@ -891,10 +891,11 @@ default_options_optimization (struct gcc_options *opts,
        optimize = 2;
 
       /* We want to crossjump as much as possible.  */
        optimize = 2;
 
       /* We want to crossjump as much as possible.  */
-      set_param_value ("min-crossjump-insns", 1);
+      maybe_set_param_value (PARAM_MIN_CROSSJUMP_INSNS, 1);
     }
   else
     }
   else
-    set_param_value ("min-crossjump-insns", initial_min_crossjump_insns);
+    maybe_set_param_value (PARAM_MIN_CROSSJUMP_INSNS,
+                          initial_min_crossjump_insns);
 
   /* -Ofast adds optimizations to -O3.  */
   if (ofast)
 
   /* -Ofast adds optimizations to -O3.  */
   if (ofast)
@@ -1114,10 +1115,8 @@ finish_options (struct gcc_options *opts, struct gcc_options *opts_set)
 
   if (flag_conserve_stack)
     {
 
   if (flag_conserve_stack)
     {
-      if (!PARAM_SET_P (PARAM_LARGE_STACK_FRAME))
-        PARAM_VALUE (PARAM_LARGE_STACK_FRAME) = 100;
-      if (!PARAM_SET_P (PARAM_STACK_FRAME_GROWTH))
-        PARAM_VALUE (PARAM_STACK_FRAME_GROWTH) = 40;
+      maybe_set_param_value (PARAM_LARGE_STACK_FRAME, 100);
+      maybe_set_param_value (PARAM_STACK_FRAME_GROWTH, 40);
     }
   if (flag_wpa || flag_ltrans)
     {
     }
   if (flag_wpa || flag_ltrans)
     {
index cec5751..666913a 100644 (file)
@@ -1,5 +1,5 @@
 /* params.c - Run-time parameters.
 /* params.c - Run-time parameters.
-   Copyright (C) 2001, 2003, 2004, 2005, 2007, 2008
+   Copyright (C) 2001, 2003, 2004, 2005, 2007, 2008, 2009, 2010
    Free Software Foundation, Inc.
    Written by Mark Mitchell <mark@codesourcery.com>.
 
    Free Software Foundation, Inc.
    Written by Mark Mitchell <mark@codesourcery.com>.
 
@@ -51,6 +51,21 @@ add_params (const param_info params[], size_t n)
   num_compiler_params += n;
 }
 
   num_compiler_params += n;
 }
 
+/* Set the value of the parameter given by NUM to VALUE.  If
+   EXPLICIT_P, this is being set by the user; otherwise it is being
+   set implicitly by the compiler.  */
+
+static void
+set_param_value_internal (compiler_param num, int value,
+                         bool explicit_p)
+{
+  size_t i = (size_t) num;
+
+  compiler_params[i].value = value;
+  if (explicit_p)
+    compiler_params[i].set = true;
+}
+
 /* Set the VALUE associated with the parameter given by NAME.  */
 
 void
 /* Set the VALUE associated with the parameter given by NAME.  */
 
 void
@@ -75,10 +90,7 @@ set_param_value (const char *name, int value)
                 compiler_params[i].option,
                 compiler_params[i].max_value);
        else
                 compiler_params[i].option,
                 compiler_params[i].max_value);
        else
-         {
-           compiler_params[i].value = value;
-           compiler_params[i].set = true;
-         }
+         set_param_value_internal ((compiler_param) i, value, true);
        return;
       }
 
        return;
       }
 
@@ -86,6 +98,26 @@ set_param_value (const char *name, int value)
   error ("invalid parameter %qs", name);
 }
 
   error ("invalid parameter %qs", name);
 }
 
+/* Set the value of the parameter given by NUM to VALUE, implicitly,
+   if it has not been set explicitly by the user.  */
+
+void
+maybe_set_param_value (compiler_param num, int value)
+{
+  if (!PARAM_SET_P (num))
+    set_param_value_internal (num, value, false);
+}
+
+/* Set the default value of a parameter given by NUM to VALUE, before
+   option processing.  */
+
+void
+set_default_param_value (compiler_param num, int value)
+{
+  gcc_assert (!PARAM_SET_P (num));
+  set_param_value_internal (num, value, false);
+}
+
 /* Return the current value of num_compiler_params, for the benefit of
    plugins that use parameters as features.  */
 
 /* Return the current value of num_compiler_params, for the benefit of
    plugins that use parameters as features.  */
 
index aa96c81..b924e78 100644 (file)
@@ -1,5 +1,5 @@
 /* params.h - Run-time parameters.
 /* params.h - Run-time parameters.
-   Copyright (C) 2001, 2003, 2004, 2005, 2007, 2008, 2009
+   Copyright (C) 2001, 2003, 2004, 2005, 2007, 2008, 2009, 2010
    Free Software Foundation, Inc.
    Written by Mark Mitchell <mark@codesourcery.com>.
 
    Free Software Foundation, Inc.
    Written by Mark Mitchell <mark@codesourcery.com>.
 
@@ -88,13 +88,24 @@ typedef enum compiler_param
   LAST_PARAM
 } compiler_param;
 
   LAST_PARAM
 } compiler_param;
 
-/* The value of the parameter given by ENUM.  */
+/* The value of the parameter given by ENUM.  Not an lvalue.  */
 #define PARAM_VALUE(ENUM) \
 #define PARAM_VALUE(ENUM) \
-  (compiler_params[(int) ENUM].value)
+  ((int) compiler_params[(int) ENUM].value)
 
 
-/* True if the value of the parameter was explicitly changed.  */
+/* Set the value of the parameter given by NUM to VALUE, implicitly,
+   if it has not been set explicitly by the user.  */
+
+extern void maybe_set_param_value (compiler_param num, int value);
+
+/* Set the default value of a parameter given by NUM to VALUE, before
+   option processing.  */
+
+extern void set_default_param_value (compiler_param num, int value);
+
+/* True if the value of the parameter was explicitly changed.  Not an
+   lvalue.  */
 #define PARAM_SET_P(ENUM) \
 #define PARAM_SET_P(ENUM) \
-  (compiler_params[(int) ENUM].set)
+  ((bool) compiler_params[(int) ENUM].set)
 
 /* Macros for the various parameters.  */
 #define STRUCT_REORG_COLD_STRUCT_RATIO \
 
 /* Macros for the various parameters.  */
 #define STRUCT_REORG_COLD_STRUCT_RATIO \
index 266870a..9d5fe32 100644 (file)
@@ -2340,6 +2340,13 @@ DEFHOOK
  void, (int level, int size),
  hook_void_int_int)
 
  void, (int level, int size),
  hook_void_int_int)
 
+DEFHOOK
+(default_params,
+"Set target-dependent default values for @option{--param} settings, using\
+ calls to @code{set_default_param_value}.",
+ void, (void),
+ hook_void_void)
+
 /* Function to determine if one function can inline another function.  */
 #undef HOOK_PREFIX
 #define HOOK_PREFIX "TARGET_"
 /* Function to determine if one function can inline another function.  */
 #undef HOOK_PREFIX
 #define HOOK_PREFIX "TARGET_"
index a6c13f1..21d23fd 100644 (file)
@@ -1692,6 +1692,7 @@ general_init (const char *argv0)
 
   /* Register the language-independent parameters.  */
   add_params (lang_independent_params, LAST_PARAM);
 
   /* Register the language-independent parameters.  */
   add_params (lang_independent_params, LAST_PARAM);
+  targetm.target_option.default_params ();
 
   /* This must be done after add_params but before argument processing.  */
   init_ggc_heuristics();
 
   /* This must be done after add_params but before argument processing.  */
   init_ggc_heuristics();