diff options
author | Richard Sandiford <rsandifo@redhat.com> | 2005-06-01 06:58:41 +0000 |
---|---|---|
committer | Richard Sandiford <rsandifo@gcc.gnu.org> | 2005-06-01 06:58:41 +0000 |
commit | 7dd2f19b2fadf4edb3a7277563b5b1ee59f8723c (patch) | |
tree | d20a11e04f4e271a377feed29e374c2deede32f3 /gcc/config | |
parent | 5c60a0172d9cce62e61afd5d851106775a1a48e6 (diff) | |
download | gcc-7dd2f19b2fadf4edb3a7277563b5b1ee59f8723c.zip gcc-7dd2f19b2fadf4edb3a7277563b5b1ee59f8723c.tar.gz gcc-7dd2f19b2fadf4edb3a7277563b5b1ee59f8723c.tar.bz2 |
sh.c (multcosts): Check sh_multcost rather than sh_multcost_str.
* 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.
From-SVN: r100431
Diffstat (limited to 'gcc/config')
-rw-r--r-- | gcc/config/sh/sh.c | 13 | ||||
-rw-r--r-- | gcc/config/sh/sh.h | 26 | ||||
-rw-r--r-- | gcc/config/sh/sh.opt | 20 |
3 files changed, 24 insertions, 35 deletions
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 |