From 4906bcbbfca64392cd44fc19d2c76a0be53771c1 Mon Sep 17 00:00:00 2001 From: rsandifo Date: Wed, 1 Jun 2005 06:58:41 +0000 Subject: [PATCH] * config/sh/sh.c (multcosts): Check sh_multcost rather than sh_multcost_str. (sh_register_move_cost): Likewise sh_gettrcost and sh_gettrcost_str. (sh_multcost_str, sh_gettrcost_str, sh_div_str, sh_divsi3_libfunc) (cut2_workaround_str): Delete. * config/sh/sh.h (SUBTARGET_OPTIONS, TARGET_OPTIONS) (TARGET_SH5_CUT2_WORKAROUND, sh_multcost_str, sh_gettrcost_str) (sh_div_str, sh_divsi3_libfunc, cut2_workaround_str): Delete. * config/sh/sh.opt (mcut2-workaround, mdiv=, mdivsi3_libfunc=) (mgettrcost=, multcost=): New options. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@100431 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 13 +++++++++++++ gcc/config/sh/sh.c | 13 ++++--------- gcc/config/sh/sh.h | 26 -------------------------- gcc/config/sh/sh.opt | 20 ++++++++++++++++++++ 4 files changed, 37 insertions(+), 35 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 045c42a..4caea63 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,18 @@ 2005-06-01 Richard Sandiford + * config/sh/sh.c (multcosts): Check sh_multcost rather than + sh_multcost_str. + (sh_register_move_cost): Likewise sh_gettrcost and sh_gettrcost_str. + (sh_multcost_str, sh_gettrcost_str, sh_div_str, sh_divsi3_libfunc) + (cut2_workaround_str): Delete. + * config/sh/sh.h (SUBTARGET_OPTIONS, TARGET_OPTIONS) + (TARGET_SH5_CUT2_WORKAROUND, sh_multcost_str, sh_gettrcost_str) + (sh_div_str, sh_divsi3_libfunc, cut2_workaround_str): Delete. + * config/sh/sh.opt (mcut2-workaround, mdiv=, mdivsi3_libfunc=) + (mgettrcost=, multcost=): New options. + +2005-06-01 Richard Sandiford + * opts.h (cl_option_state): New structure. (get_option_state): Declare. * opts.c (get_option_state): New function. diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c index 582fe3f..e686645 100644 --- a/gcc/config/sh/sh.c +++ b/gcc/config/sh/sh.c @@ -1965,8 +1965,8 @@ addsubcosts (rtx x) static inline int multcosts (rtx x ATTRIBUTE_UNUSED) { - if (*sh_multcost_str) - return atoi (sh_multcost_str); + if (sh_multcost >= 0) + return sh_multcost; if (TARGET_SHMEDIA) /* ??? We have a mul insn, but it has a latency of three, and doesn't accept constants. Ideally, we would use a cost of one or two and @@ -10069,8 +10069,8 @@ sh_register_move_cost (enum machine_mode mode, if (TARGET_SHMEDIA && ((srcclass) == TARGET_REGS || (srcclass) == SIBCALL_REGS)) { - if (*sh_gettrcost_str) - return atoi (sh_gettrcost_str); + if (sh_gettrcost >= 0) + return sh_gettrcost; else if (!TARGET_PT_FIXED) return 100; } @@ -11233,11 +11233,6 @@ shmedia_prepare_call_address (rtx fnaddr, int is_sibcall) return fnaddr; } -const char *sh_multcost_str = ""; -const char *sh_gettrcost_str = ""; -const char *sh_div_str = ""; -const char *sh_divsi3_libfunc = ""; -const char *cut2_workaround_str = ""; enum sh_divide_strategy_e sh_div_strategy = SH_DIV_STRATEGY_DEFAULT; /* This defines the storage for the variable part of a -mboard= option. diff --git a/gcc/config/sh/sh.h b/gcc/config/sh/sh.h index 92d8ce0..a6652df 100644 --- a/gcc/config/sh/sh.h +++ b/gcc/config/sh/sh.h @@ -334,26 +334,6 @@ do { \ #define TARGET_DEFAULT \ (TARGET_CPU_DEFAULT | TARGET_ENDIAN_DEFAULT | TARGET_OPT_DEFAULT) -#ifndef SUBTARGET_OPTIONS -#define SUBTARGET_OPTIONS -#endif - -#define TARGET_OPTIONS \ -{ { "ultcost=", &sh_multcost_str, \ - N_("Cost to assume for a multiply insn"), 0 }, \ - { "gettrcost=", &sh_gettrcost_str, \ - N_("Cost to assume for gettr insn"), 0 }, \ - { "div=", &sh_div_str, \ - N_("division strategy, one of: call, call2, fp, inv, inv:minlat, inv20u, inv20l, inv:call, inv:call2, inv:fp"), 0 }, \ - { "divsi3_libfunc=", &sh_divsi3_libfunc, \ - N_("Specify name for 32 bit signed division function"), 0 }, \ - { "cut2-workaround", &cut2_workaround_str, \ - N_("Enable SH5 cut2 workaround"), "\1" }, \ - SUBTARGET_OPTIONS \ -} - -#define TARGET_SH5_CUT2_WORKAROUND (*cut2_workaround_str) - #ifndef SH_MULTILIB_CPU_DEFAULT #define SH_MULTILIB_CPU_DEFAULT "m1" #endif @@ -3460,12 +3440,6 @@ extern struct rtx_def *sp_switch; #define SIMULTANEOUS_PREFETCHES 2 -extern const char *sh_multcost_str; -extern const char *sh_gettrcost_str; -extern const char *sh_div_str; -extern const char *sh_divsi3_libfunc; -extern const char *cut2_workaround_str; - /* FIXME: middle-end support for highpart optimizations is missing. */ #define high_life_started reload_in_progress diff --git a/gcc/config/sh/sh.opt b/gcc/config/sh/sh.opt index c3c659f..553a557 100644 --- a/gcc/config/sh/sh.opt +++ b/gcc/config/sh/sh.opt @@ -148,13 +148,29 @@ mbigtable Target Report RejectNegative Mask(BIGTABLE) Generate 32-bit offsets in switch tables +mcut2-workaround +Target RejectNegative Var(TARGET_SH5_CUT2_WORKAROUND) +Enable SH5 cut2 workaround + mdalign Target Report RejectNegative Mask(ALIGN_DOUBLE) Align doubles at 64-bit boundaries +mdiv= +Target RejectNegative Joined Var(sh_div_str) Init("") +Division strategy, one of: call, call2, fp, inv, inv:minlat, inv20u, inv20l, inv:call, inv:call2, inv:fp + +mdivsi3_libfunc= +Target RejectNegative Joined Var(sh_divsi3_libfunc) Init("") +Specify name for 32 bit signed division function + mfmovd Target RejectNegative Mask(FMOVD) Undocumented +mgettrcost= +Target RejectNegative Joined UInteger Var(sh_gettrcost) Init(-1) +Cost to assume for gettr insn + mhitachi Target Report RejectNegative Mask(HITACHI) Follow Renesas (formerly Hitachi) / SuperH calling conventions @@ -209,6 +225,10 @@ mspace Target Report RejectNegative Mask(SMALLCODE) Deprecated. Use -Os instead +multcost= +Target RejectNegative Joined UInteger Var(sh_multcost) Init(-1) +Cost to assume for a multiply insn + musermode Target Report RejectNegative Mask(USERMODE) Generate library function call to invalidate instruction cache entries after fixing trampoline -- 2.7.4