summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>2011-06-23 10:41:42 +0000
committerjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>2011-06-23 10:41:42 +0000
commit6a2fc14eb132a2a4e1ac2849dd34152ec494ce9e (patch)
tree7b93802244815ada4c0d9017f18aa9c00fd3c497 /gcc
parent0f0c40109c936ceeb2c55635a170aeedc1a3bc8d (diff)
downloadgcc-6a2fc14eb132a2a4e1ac2849dd34152ec494ce9e.tar.gz
* params.c: Include common/common-target.h. Don't include tm.h.
(lang_independent_params): Move from toplev.c. (global_init_params): New. * params.h (global_init_params): Declare. * target.def (default_params): Move to common-target.def. * toplev.c (lang_independent_options): Remove. (lang_independent_params): Move to params.c. (general_init): Use global_init_params. * common/common-target.def (option_default_params): Move from target.def. * common/config/ia64/ia64-common.c: Include params.h. (ia64_option_default_params, TARGET_OPTION_DEFAULT_PARAMS): Move from ia64.c. * common/config/rs6000/rs6000-common.c: Include params.h. (rs6000_option_default_params, TARGET_OPTION_DEFAULT_PARAMS): Move from rs6000.c. * common/config/sh/sh-common.c: Include params.h. (sh_option_default_params, TARGET_OPTION_DEFAULT_PARAMS): Move from sh.c. * common/config/spu/spu-common.c: Include params.h. (spu_option_default_params, TARGET_OPTION_DEFAULT_PARAMS): Move from spu.c. * config/ia64/ia64.c (ia64_option_default_params, TARGET_OPTION_DEFAULT_PARAMS): Move to ia64-common.c. * config/rs6000/rs6000.c (rs6000_option_default_params, TARGET_OPTION_DEFAULT_PARAMS): Move to rs6000-common.c. * config/sh/sh.c (sh_option_default_params, TARGET_OPTION_DEFAULT_PARAMS): Move to sh-common.c. * config/spu/spu.c (spu_option_default_params, TARGET_OPTION_DEFAULT_PARAMS): Move to spu-common.c. * Makefile.in (OBJS): Remove params.o. (OBJS-libcommon-target): Add params.o. (params.o, $(common_out_object_file)): Update dependencies. * doc/tm.texi: Regenerate. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@175330 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog37
-rw-r--r--gcc/Makefile.in11
-rw-r--r--gcc/common/common-target.def7
-rw-r--r--gcc/common/config/ia64/ia64-common.c18
-rw-r--r--gcc/common/config/rs6000/rs6000-common.c13
-rw-r--r--gcc/common/config/sh/sh-common.c10
-rw-r--r--gcc/common/config/spu/spu-common.c13
-rw-r--r--gcc/config/ia64/ia64.c17
-rw-r--r--gcc/config/rs6000/rs6000.c13
-rw-r--r--gcc/config/sh/sh.c11
-rw-r--r--gcc/config/spu/spu.c13
-rw-r--r--gcc/doc/tm.texi2
-rw-r--r--gcc/params.c22
-rw-r--r--gcc/params.h5
-rw-r--r--gcc/target.def7
-rw-r--r--gcc/toplev.c22
16 files changed, 132 insertions, 89 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 059d7163907..b298d5fbd78 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,40 @@
+2011-06-23 Joseph Myers <joseph@codesourcery.com>
+
+ * params.c: Include common/common-target.h. Don't include tm.h.
+ (lang_independent_params): Move from toplev.c.
+ (global_init_params): New.
+ * params.h (global_init_params): Declare.
+ * target.def (default_params): Move to common-target.def.
+ * toplev.c (lang_independent_options): Remove.
+ (lang_independent_params): Move to params.c.
+ (general_init): Use global_init_params.
+ * common/common-target.def (option_default_params): Move from
+ target.def.
+ * common/config/ia64/ia64-common.c: Include params.h.
+ (ia64_option_default_params, TARGET_OPTION_DEFAULT_PARAMS): Move
+ from ia64.c.
+ * common/config/rs6000/rs6000-common.c: Include params.h.
+ (rs6000_option_default_params, TARGET_OPTION_DEFAULT_PARAMS): Move
+ from rs6000.c.
+ * common/config/sh/sh-common.c: Include params.h.
+ (sh_option_default_params, TARGET_OPTION_DEFAULT_PARAMS): Move
+ from sh.c.
+ * common/config/spu/spu-common.c: Include params.h.
+ (spu_option_default_params, TARGET_OPTION_DEFAULT_PARAMS): Move
+ from spu.c.
+ * config/ia64/ia64.c (ia64_option_default_params,
+ TARGET_OPTION_DEFAULT_PARAMS): Move to ia64-common.c.
+ * config/rs6000/rs6000.c (rs6000_option_default_params,
+ TARGET_OPTION_DEFAULT_PARAMS): Move to rs6000-common.c.
+ * config/sh/sh.c (sh_option_default_params,
+ TARGET_OPTION_DEFAULT_PARAMS): Move to sh-common.c.
+ * config/spu/spu.c (spu_option_default_params,
+ TARGET_OPTION_DEFAULT_PARAMS): Move to spu-common.c.
+ * Makefile.in (OBJS): Remove params.o.
+ (OBJS-libcommon-target): Add params.o.
+ (params.o, $(common_out_object_file)): Update dependencies.
+ * doc/tm.texi: Regenerate.
+
2011-06-23 Alan Modra <amodra@gmail.com>
PR bootstrap/49383
diff --git a/gcc/Makefile.in b/gcc/Makefile.in
index 1bb67477d7c..968588016b7 100644
--- a/gcc/Makefile.in
+++ b/gcc/Makefile.in
@@ -1355,7 +1355,6 @@ OBJS = \
options-save.o \
opts-global.o \
opts.o \
- params.o \
passes.o \
plugin.o \
pointer-set.o \
@@ -1504,8 +1503,8 @@ 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 opts-common.o \
- options.o vec.o hooks.o common/common-targhooks.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
# This lists all host objects for the front ends.
ALL_HOST_FRONTEND_OBJS = $(C_OBJS) \
@@ -3538,8 +3537,8 @@ ifcvt.o : ifcvt.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(RTL_H) \
$(TARGET_H) $(BASIC_BLOCK_H) $(EXPR_H) output.h $(EXCEPT_H) $(TM_P_H) \
$(OPTABS_H) $(CFGLOOP_H) hard-reg-set.h $(TIMEVAR_H) \
$(TREE_PASS_H) $(DF_H) $(DBGCNT_H)
-params.o : params.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(PARAMS_H) \
- $(DIAGNOSTIC_CORE_H)
+params.o : params.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(COMMON_TARGET_H) \
+ $(PARAMS_H) $(DIAGNOSTIC_CORE_H)
pointer-set.o: pointer-set.c pointer-set.h $(CONFIG_H) $(SYSTEM_H)
hooks.o: hooks.c $(CONFIG_H) $(SYSTEM_H) coretypes.h $(TM_H) $(HOOKS_H)
pretty-print.o: $(CONFIG_H) $(SYSTEM_H) coretypes.h intl.h $(PRETTY_PRINT_H)
@@ -3564,7 +3563,7 @@ $(out_object_file): $(out_file) $(CONFIG_H) coretypes.h $(TM_H) $(TREE_H) \
$(out_file) $(OUTPUT_OPTION)
$(common_out_object_file): $(common_out_file) $(CONFIG_H) $(SYSTEM_H) \
- coretypes.h $(COMMON_TARGET_H) $(COMMON_TARGET_DEF_H) \
+ coretypes.h $(COMMON_TARGET_H) $(COMMON_TARGET_DEF_H) $(PARAMS_H) \
$(DIAGNOSTIC_CORE_H) $(FLAGS_H) $(OPTS_H) $(TM_H) $(TM_P_H) $(MACHMODE_H)
$(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) \
$< $(OUTPUT_OPTION)
diff --git a/gcc/common/common-target.def b/gcc/common/common-target.def
index ab89758221a..d8ede82e5b6 100644
--- a/gcc/common/common-target.def
+++ b/gcc/common/common-target.def
@@ -50,6 +50,13 @@ DEFHOOKPOD
"",
const struct default_options *, empty_optimization_table)
+DEFHOOK
+(option_default_params,
+"Set target-dependent default values for @option{--param} settings, using\
+ calls to @code{set_default_param_value}.",
+ void, (void),
+ hook_void_void)
+
/* The initial value of target_flags. */
DEFHOOKPOD
(default_target_flags,
diff --git a/gcc/common/config/ia64/ia64-common.c b/gcc/common/config/ia64/ia64-common.c
index 8c86ff49e68..11682532704 100644
--- a/gcc/common/config/ia64/ia64-common.c
+++ b/gcc/common/config/ia64/ia64-common.c
@@ -29,6 +29,7 @@ along with GCC; see the file COPYING3. If not see
#include "common/common-target-def.h"
#include "opts.h"
#include "flags.h"
+#include "params.h"
/* Implement overriding of the optimization options. */
static const struct default_options ia64_option_optimization_table[] =
@@ -83,8 +84,25 @@ ia64_except_unwind_info (struct gcc_options *opts)
return UI_TARGET;
}
+/* Implement TARGET_OPTION_DEFAULT_PARAMS. */
+
+static void
+ia64_option_default_params (void)
+{
+ /* Let the scheduler form additional regions. */
+ set_default_param_value (PARAM_MAX_SCHED_EXTEND_REGIONS_ITERS, 2);
+
+ /* Set the default values for cache-related parameters. */
+ set_default_param_value (PARAM_SIMULTANEOUS_PREFETCHES, 6);
+ set_default_param_value (PARAM_L1_CACHE_LINE_SIZE, 32);
+
+ set_default_param_value (PARAM_SCHED_MEM_TRUE_DEP_COST, 4);
+}
+
#undef TARGET_OPTION_OPTIMIZATION_TABLE
#define TARGET_OPTION_OPTIMIZATION_TABLE ia64_option_optimization_table
+#undef TARGET_OPTION_DEFAULT_PARAMS
+#define TARGET_OPTION_DEFAULT_PARAMS ia64_option_default_params
#undef TARGET_EXCEPT_UNWIND_INFO
#define TARGET_EXCEPT_UNWIND_INFO ia64_except_unwind_info
diff --git a/gcc/common/config/rs6000/rs6000-common.c b/gcc/common/config/rs6000/rs6000-common.c
index 0482c07d7a9..683240f27ba 100644
--- a/gcc/common/config/rs6000/rs6000-common.c
+++ b/gcc/common/config/rs6000/rs6000-common.c
@@ -28,6 +28,7 @@
#include "common/common-target-def.h"
#include "opts.h"
#include "flags.h"
+#include "params.h"
/* Implement TARGET_OPTION_OPTIMIZATION_TABLE. */
static const struct default_options rs6000_option_optimization_table[] =
@@ -51,6 +52,15 @@ rs6000_option_init_struct (struct gcc_options *opts)
opts->x_flag_section_anchors = 1;
}
+/* 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);
+}
+
/* If not otherwise specified by a target, make 'long double' equivalent to
'double'. */
@@ -316,6 +326,9 @@ rs6000_handle_option (struct gcc_options *opts, struct gcc_options *opts_set,
#undef TARGET_OPTION_INIT_STRUCT
#define TARGET_OPTION_INIT_STRUCT rs6000_option_init_struct
+#undef TARGET_OPTION_DEFAULT_PARAMS
+#define TARGET_OPTION_DEFAULT_PARAMS rs6000_option_default_params
+
#undef TARGET_OPTION_OPTIMIZATION_TABLE
#define TARGET_OPTION_OPTIMIZATION_TABLE rs6000_option_optimization_table
diff --git a/gcc/common/config/sh/sh-common.c b/gcc/common/config/sh/sh-common.c
index 8677fd49174..5a0c062e709 100644
--- a/gcc/common/config/sh/sh-common.c
+++ b/gcc/common/config/sh/sh-common.c
@@ -27,6 +27,7 @@ along with GCC; see the file COPYING3. If not see
#include "common/common-target-def.h"
#include "opts.h"
#include "flags.h"
+#include "params.h"
/* Set default optimization options. */
static const struct default_options sh_option_optimization_table[] =
@@ -196,10 +197,19 @@ sh_option_init_struct (struct gcc_options *opts)
opts->x_flag_finite_math_only = 2;
}
+/* Implement TARGET_OPTION_DEFAULT_PARAMS. */
+static void
+sh_option_default_params (void)
+{
+ set_default_param_value (PARAM_SIMULTANEOUS_PREFETCHES, 2);
+}
+
#undef TARGET_OPTION_OPTIMIZATION_TABLE
#define TARGET_OPTION_OPTIMIZATION_TABLE sh_option_optimization_table
#undef TARGET_OPTION_INIT_STRUCT
#define TARGET_OPTION_INIT_STRUCT sh_option_init_struct
+#undef TARGET_OPTION_DEFAULT_PARAMS
+#define TARGET_OPTION_DEFAULT_PARAMS sh_option_default_params
#undef TARGET_DEFAULT_TARGET_FLAGS
#define TARGET_DEFAULT_TARGET_FLAGS TARGET_DEFAULT
#undef TARGET_HANDLE_OPTION
diff --git a/gcc/common/config/spu/spu-common.c b/gcc/common/config/spu/spu-common.c
index d4a9f3c7cd9..421de7e847e 100644
--- a/gcc/common/config/spu/spu-common.c
+++ b/gcc/common/config/spu/spu-common.c
@@ -24,6 +24,7 @@
#include "common/common-target-def.h"
#include "opts.h"
#include "flags.h"
+#include "params.h"
static void
spu_option_init_struct (struct gcc_options *opts)
@@ -32,12 +33,24 @@ spu_option_init_struct (struct gcc_options *opts)
opts->x_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);
+}
+
#undef TARGET_DEFAULT_TARGET_FLAGS
#define TARGET_DEFAULT_TARGET_FLAGS (TARGET_DEFAULT)
#undef TARGET_OPTION_INIT_STRUCT
#define TARGET_OPTION_INIT_STRUCT spu_option_init_struct
+#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
diff --git a/gcc/config/ia64/ia64.c b/gcc/config/ia64/ia64.c
index 78d2441a32c..901481358b3 100644
--- a/gcc/config/ia64/ia64.c
+++ b/gcc/config/ia64/ia64.c
@@ -192,7 +192,6 @@ static rtx gen_fr_spill_x (rtx, rtx, rtx);
static rtx gen_fr_restore_x (rtx, rtx, rtx);
static void ia64_option_override (void);
-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_t, enum machine_mode,
@@ -377,8 +376,6 @@ static const struct attribute_spec ia64_attribute_table[] =
#undef TARGET_OPTION_OVERRIDE
#define TARGET_OPTION_OVERRIDE ia64_option_override
-#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
@@ -10859,20 +10856,6 @@ ia64_invalid_binary_op (int op ATTRIBUTE_UNUSED, const_tree type1, const_tree ty
return NULL;
}
-/* Implement TARGET_OPTION_DEFAULT_PARAMS. */
-static void
-ia64_option_default_params (void)
-{
- /* Let the scheduler form additional regions. */
- set_default_param_value (PARAM_MAX_SCHED_EXTEND_REGIONS_ITERS, 2);
-
- /* Set the default values for cache-related parameters. */
- set_default_param_value (PARAM_SIMULTANEOUS_PREFETCHES, 6);
- set_default_param_value (PARAM_L1_CACHE_LINE_SIZE, 32);
-
- set_default_param_value (PARAM_SCHED_MEM_TRUE_DEP_COST, 4);
-}
-
/* HP-UX version_id attribute.
For object foo, if the version_id is set to 1234 put out an alias
of '.alias foo "foo{1234}" We can't use "foo{1234}" in anything
diff --git a/gcc/config/rs6000/rs6000.c b/gcc/config/rs6000/rs6000.c
index b21cb7f37a9..a87280c8ec4 100644
--- a/gcc/config/rs6000/rs6000.c
+++ b/gcc/config/rs6000/rs6000.c
@@ -1045,7 +1045,6 @@ static rtx altivec_expand_vec_set_builtin (tree);
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_default_params (void);
static int rs6000_loop_align_max_skip (rtx);
static int first_altivec_reg_to_save (void);
static unsigned int compute_vrsave_mask (void);
@@ -1528,9 +1527,6 @@ static const struct attribute_spec rs6000_attribute_table[] =
#undef TARGET_OPTION_OVERRIDE
#define TARGET_OPTION_OVERRIDE rs6000_option_override
-#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
@@ -3678,15 +3674,6 @@ rs6000_preferred_simd_mode (enum machine_mode mode)
return word_mode;
}
-/* 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);
-}
-
/* Handler for the Mathematical Acceleration Subsystem (mass) interface to a
library with vectorized intrinsics. */
diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c
index 327a236a9e3..d945156ee86 100644
--- a/gcc/config/sh/sh.c
+++ b/gcc/config/sh/sh.c
@@ -182,7 +182,6 @@ static int noncall_uses_reg (rtx, rtx, rtx *);
static rtx gen_block_redirect (rtx, int, int);
static void sh_reorg (void);
static void sh_option_override (void);
-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);
@@ -345,8 +344,6 @@ static const struct attribute_spec sh_attribute_table[] =
#undef TARGET_OPTION_OVERRIDE
#define TARGET_OPTION_OVERRIDE sh_option_override
-#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
@@ -578,14 +575,6 @@ static const struct attribute_spec sh_attribute_table[] =
struct gcc_target targetm = TARGET_INITIALIZER;
-
-/* 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
various options, and do some machine dependent initialization. */
static void
diff --git a/gcc/config/spu/spu.c b/gcc/config/spu/spu.c
index 0da736c8be1..63985e1a762 100644
--- a/gcc/config/spu/spu.c
+++ b/gcc/config/spu/spu.c
@@ -149,7 +149,6 @@ char regs_ever_allocated[FIRST_PSEUDO_REGISTER];
/* Prototypes and external defs. */
static void spu_option_override (void);
-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);
@@ -487,9 +486,6 @@ static void spu_setup_incoming_varargs (cumulative_args_t cum,
#undef TARGET_OPTION_OVERRIDE
#define TARGET_OPTION_OVERRIDE spu_option_override
-#undef TARGET_OPTION_DEFAULT_PARAMS
-#define TARGET_OPTION_DEFAULT_PARAMS spu_option_default_params
-
#undef TARGET_CONDITIONAL_REGISTER_USAGE
#define TARGET_CONDITIONAL_REGISTER_USAGE spu_conditional_register_usage
@@ -508,15 +504,6 @@ static void spu_setup_incoming_varargs (cumulative_args_t cum,
struct gcc_target targetm = TARGET_INITIALIZER;
-/* 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)
diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi
index dd61a224b6b..341628bb3ea 100644
--- a/gcc/doc/tm.texi
+++ b/gcc/doc/tm.texi
@@ -762,7 +762,7 @@ options are changed via @code{#pragma GCC optimize} or by using the
Set target-dependent initial values of fields in @var{opts}.
@end deftypefn
-@deftypefn {Target Hook} void TARGET_OPTION_DEFAULT_PARAMS (void)
+@deftypefn {Common 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
diff --git a/gcc/params.c b/gcc/params.c
index 95af6cec0ed..793ddef9241 100644
--- a/gcc/params.c
+++ b/gcc/params.c
@@ -1,5 +1,5 @@
/* params.c - Run-time parameters.
- Copyright (C) 2001, 2003, 2004, 2005, 2007, 2008, 2009, 2010
+ Copyright (C) 2001, 2003, 2004, 2005, 2007, 2008, 2009, 2010, 2011
Free Software Foundation, Inc.
Written by Mark Mitchell <mark@codesourcery.com>.
@@ -22,7 +22,7 @@ along with GCC; see the file COPYING3. If not see
#include "config.h"
#include "system.h"
#include "coretypes.h"
-#include "tm.h"
+#include "common/common-target.h"
#include "params.h"
#include "diagnostic-core.h"
@@ -38,6 +38,14 @@ static size_t num_compiler_params;
default values determined. */
static bool params_finished;
+static const param_info lang_independent_params[] = {
+#define DEFPARAM(ENUM, OPTION, HELP, DEFAULT, MIN, MAX) \
+ { OPTION, DEFAULT, MIN, MAX, HELP },
+#include "params.def"
+#undef DEFPARAM
+ { NULL, 0, 0, 0, NULL }
+};
+
/* Add the N PARAMS to the current list of compiler parameters. */
void
@@ -56,6 +64,16 @@ add_params (const param_info params[], size_t n)
num_compiler_params += n;
}
+/* Add all parameters and default values that can be set in both the
+ driver and the compiler proper. */
+
+void
+global_init_params (void)
+{
+ add_params (lang_independent_params, LAST_PARAM);
+ targetm_common.option_default_params ();
+}
+
/* Note that all parameters have been added and all default values
set. */
diff --git a/gcc/params.h b/gcc/params.h
index 98a64fd0bb1..364029df532 100644
--- a/gcc/params.h
+++ b/gcc/params.h
@@ -105,6 +105,11 @@ extern void maybe_set_param_value (compiler_param num, int value,
extern void set_default_param_value (compiler_param num, int value);
+/* Add all parameters and default values that can be set in both the
+ driver and the compiler proper. */
+
+extern void global_init_params (void);
+
/* Note that all parameters have been added and all default values
set. */
extern void finish_params (void);
diff --git a/gcc/target.def b/gcc/target.def
index c5acaabb1fe..c67f0bacf7f 100644
--- a/gcc/target.def
+++ b/gcc/target.def
@@ -2545,13 +2545,6 @@ DEFHOOK
void, (void),
hook_void_void)
-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_"
diff --git a/gcc/toplev.c b/gcc/toplev.c
index 2597140b58c..8b02b382d60 100644
--- a/gcc/toplev.c
+++ b/gcc/toplev.c
@@ -183,25 +183,9 @@ struct target_flag_state *this_target_flag_state = &default_target_flag_state;
#define this_target_flag_state (&default_target_flag_state)
#endif
-typedef struct
-{
- const char *const string;
- int *const variable;
- const int on_value;
-}
-lang_independent_options;
-
/* The user symbol prefix after having resolved same. */
const char *user_label_prefix;
-static const param_info lang_independent_params[] = {
-#define DEFPARAM(ENUM, OPTION, HELP, DEFAULT, MIN, MAX) \
- { OPTION, DEFAULT, MIN, MAX, HELP },
-#include "params.def"
-#undef DEFPARAM
- { NULL, 0, 0, 0, NULL }
-};
-
/* Output files for assembler code (real compiler output)
and debugging dumps. */
@@ -1213,10 +1197,10 @@ general_init (const char *argv0)
init_reg_sets ();
/* Register the language-independent parameters. */
- add_params (lang_independent_params, LAST_PARAM);
- targetm.target_option.default_params ();
+ global_init_params ();
- /* This must be done after add_params but before argument processing. */
+ /* This must be done after global_init_params but before argument
+ processing. */
init_ggc_heuristics();
init_optimization_passes ();
statistics_early_init ();