This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]