This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
RFA: Move SH TARGET_OPTIONS to sh.opt
- From: Richard Sandiford <rsandifo at redhat dot com>
- To: gcc-patches at gcc dot gnu dot org
- Cc: joern dot rennecke at st dot com, aoliva at redhat dot com
- Date: Sat, 28 May 2005 08:35:19 +0100
- Subject: RFA: Move SH TARGET_OPTIONS to sh.opt
This patch moves the SH TARGET_OPTIONS to sh.opt. It's very
mechanical really. The only notable change is that sh_multcost_str
and sh_gettrcost_str are replaced with integer variables.
As with the TARGET_SWITCHES patch, there's the question of what
to do with superh.h. That file isn't currently used, but it does
define SUBTARGET_OPTIONS. It didn't seem worth moving these options
to a .opt file (and consequently adding another file that isn't used
to CVS) so I just left it as-is. Like before with (even at that time
unused) TARGET_PROCESSOR_SWITCHES, the justification is that it will
document what's indended for anyone who works on superh.h later.
Tested by building sh-linux-gnu in combination with the following patches:
http://gcc.gnu.org/ml/gcc-patches/2005-05/msg02594.html
http://gcc.gnu.org/ml/gcc-patches/2005-05/msg02686.html
and checking each option by hand. OK to install?
Richard
* 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.
*** gcc.1/config/sh/sh.h 2005-05-18 19:39:52.000000000 +0100
--- gcc/config/sh/sh.h 2005-05-27 16:15:30.000000000 +0100
*************** do { \
*** 334,359 ****
#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
--- 334,339 ----
*************** extern struct rtx_def *sp_switch;
*** 3460,3471 ****
#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
--- 3440,3445 ----
*** gcc.1/config/sh/sh.c 2005-05-26 19:56:37.000000000 +0100
--- gcc/config/sh/sh.c 2005-05-27 16:15:09.000000000 +0100
*************** addsubcosts (rtx x)
*** 1965,1972 ****
static inline int
multcosts (rtx x ATTRIBUTE_UNUSED)
{
! if (*sh_multcost_str)
! return atoi (sh_multcost_str);
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
--- 1965,1972 ----
static inline int
multcosts (rtx x ATTRIBUTE_UNUSED)
{
! 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
*************** sh_register_move_cost (enum machine_mode
*** 10069,10076 ****
if (TARGET_SHMEDIA
&& ((srcclass) == TARGET_REGS || (srcclass) == SIBCALL_REGS))
{
! if (*sh_gettrcost_str)
! return atoi (sh_gettrcost_str);
else if (!TARGET_PT_FIXED)
return 100;
}
--- 10069,10076 ----
if (TARGET_SHMEDIA
&& ((srcclass) == TARGET_REGS || (srcclass) == SIBCALL_REGS))
{
! if (sh_gettrcost >= 0)
! return sh_gettrcost;
else if (!TARGET_PT_FIXED)
return 100;
}
*************** shmedia_prepare_call_address (rtx fnaddr
*** 11233,11243 ****
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.
--- 11233,11238 ----
*** gcc.1/config/sh/sh.opt 2005-05-18 19:39:52.000000000 +0100
--- gcc/config/sh/sh.opt 2005-05-27 20:53:00.000000000 +0100
*************** mbigtable
*** 148,160 ****
--- 148,176 ----
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
*************** mspace
*** 209,214 ****
--- 225,234 ----
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