OSDN Git Service

* config/sh/sh.c (multcosts): Check sh_multcost rather than
authorrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 1 Jun 2005 06:58:41 +0000 (06:58 +0000)
committerrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 1 Jun 2005 06:58:41 +0000 (06:58 +0000)
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
gcc/config/sh/sh.c
gcc/config/sh/sh.h
gcc/config/sh/sh.opt

index 045c42a..4caea63 100644 (file)
@@ -1,5 +1,18 @@
 2005-06-01  Richard Sandiford  <rsandifo@redhat.com>
 
+       * 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  <rsandifo@redhat.com>
+
        * opts.h (cl_option_state): New structure.
        (get_option_state): Declare.
        * opts.c (get_option_state): New function.
index 582fe3f..e686645 100644 (file)
@@ -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.
index 92d8ce0..a6652df 100644 (file)
@@ -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
 
index c3c659f..553a557 100644 (file)
@@ -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