sh.c (register_sh_passes, [...]): Remove TARGET_SH1 checks.
authorOleg Endo <olegendo@gcc.gnu.org>
Sat, 30 Apr 2016 05:39:59 +0000 (05:39 +0000)
committerOleg Endo <olegendo@gcc.gnu.org>
Sat, 30 Apr 2016 05:39:59 +0000 (05:39 +0000)
gcc/
* config/sh/sh.c (register_sh_passes, sh_option_override,
sh_print_operand, prepare_move_operands,
sh_can_follow_jump): Remove TARGET_SH1 checks.
* config/sh/sh.h (TARGET_VARARGS_PRETEND_ARGS, VALID_REGISTER_P,
PROMOTE_MODE): Likewise.
* config/sh/sh.md (adddi3, addsi3, subdi3, subsi3, andsi3,
movdi): Likewise.

From-SVN: r235674

gcc/ChangeLog
gcc/config/sh/sh.c
gcc/config/sh/sh.h
gcc/config/sh/sh.md

index 65c5d3f575861570d61cbef16cd0b7f166d8ee18..e49d649a4d90604f4e76a41e6d4b0fdb061e6b02 100644 (file)
@@ -1,3 +1,13 @@
+2016-04-30  Oleg Endo  <olegendo@gcc.gnu.org>
+
+       * config/sh/sh.c (register_sh_passes, sh_option_override,
+       sh_print_operand, prepare_move_operands,
+       sh_can_follow_jump): Remove TARGET_SH1 checks.
+       * config/sh/sh.h (TARGET_VARARGS_PRETEND_ARGS, VALID_REGISTER_P,
+       PROMOTE_MODE): Likewise.
+       * config/sh/sh.md (adddi3, addsi3, subdi3, subsi3, andsi3,
+       movdi): Likewise.
+
 2016-04-30  Alan Modra  <amodra@gmail.com>
 
        * config/rs6000/rs6000.c (rs6000_savres_strategy): Force inline
index 3d9ce9d9ecae1f851f323e5e1f4ed53ff8a3c39d..b37d3abb252e519ac38d47753088cbd668caca0c 100644 (file)
@@ -772,9 +772,6 @@ extern opt_pass* make_pass_sh_optimize_sett_clrt (gcc::context* ctx,
 static void
 register_sh_passes (void)
 {
-  if (!TARGET_SH1)
-    return;
-
 /* Running the sh_treg_combine pass after ce1 generates better code when
    comparisons are combined and reg-reg moves are introduced, because
    reg-reg moves will be eliminated afterwards.  However, there are quite
@@ -848,36 +845,31 @@ sh_option_override (void)
   if (!TARGET_SH3 && TARGET_USERMODE)
     TARGET_USERMODE = false;
 
-  if (TARGET_SH1)
+  if (! strcmp (sh_div_str, "call-div1"))
+    sh_div_strategy = SH_DIV_CALL_DIV1;
+  else if (! strcmp (sh_div_str, "call-fp") && TARGET_FPU_ANY)
+    sh_div_strategy = SH_DIV_CALL_FP;
+  else if (! strcmp (sh_div_str, "call-table") && TARGET_DYNSHIFT)
+    sh_div_strategy = SH_DIV_CALL_TABLE;
+  else
     {
-      if (! strcmp (sh_div_str, "call-div1"))
-       sh_div_strategy = SH_DIV_CALL_DIV1;
-      else if (! strcmp (sh_div_str, "call-fp")
-              && (TARGET_FPU_DOUBLE || TARGET_FPU_SINGLE_ONLY
-                  || TARGET_FPU_ANY))
-       sh_div_strategy = SH_DIV_CALL_FP;
-      else if (! strcmp (sh_div_str, "call-table") && TARGET_DYNSHIFT)
+      /* Pick one that makes most sense for the target in general.
+        It is not much good to use different functions depending on -Os,
+        since then we'll end up with two different functions when some of
+        the code is compiled for size, and some for speed.  */
+
+      /* SH4 tends to emphasize speed.  */
+      if (TARGET_HARD_SH4)
        sh_div_strategy = SH_DIV_CALL_TABLE;
+      /* These have their own way of doing things.  */
+      else if (TARGET_SH2A)
+       sh_div_strategy = SH_DIV_INTRINSIC;
+      /* SH1 .. SH3 cores often go into small-footprint systems, so
+        default to the smallest implementation available.  */
       else
-       /* Pick one that makes most sense for the target in general.
-          It is not much good to use different functions depending
-          on -Os, since then we'll end up with two different functions
-          when some of the code is compiled for size, and some for
-          speed.  */
-
-       /* SH4 tends to emphasize speed.  */
-       if (TARGET_HARD_SH4)
-         sh_div_strategy = SH_DIV_CALL_TABLE;
-       /* These have their own way of doing things.  */
-       else if (TARGET_SH2A)
-         sh_div_strategy = SH_DIV_INTRINSIC;
-       /* SH1 .. SH3 cores often go into small-footprint systems, so
-          default to the smallest implementation available.  */
-       else
-         sh_div_strategy = SH_DIV_CALL_DIV1;
+       sh_div_strategy = SH_DIV_CALL_DIV1;
     }
-  if (!TARGET_SH1)
-    TARGET_PRETEND_CMOVE = 0;
+
   if (sh_divsi3_libfunc[0])
     ; /* User supplied - leave it alone.  */
   else if (TARGET_DIVIDE_CALL_FP)
@@ -1443,8 +1435,7 @@ sh_print_operand (FILE *stream, rtx x, int code)
          break;
 
        default:
-         if (TARGET_SH1)
-           fputc ('#', stream);
+         fputc ('#', stream);
          output_addr_const (stream, x);
          break;
        }
@@ -1618,8 +1609,7 @@ prepare_move_operands (rtx operands[], machine_mode mode)
         of a library call to the target.  Reject `st r0,@(rX,rY)' because
         reload will fail to find a spill register for rX, since r0 is already
         being used for the source.  */
-      else if (TARGET_SH1
-              && refers_to_regno_p (R0_REG, operands[1])
+      else if (refers_to_regno_p (R0_REG, operands[1])
               && MEM_P (operands[0])
               && GET_CODE (XEXP (operands[0], 0)) == PLUS
               && REG_P (XEXP (XEXP (operands[0], 0), 1)))
@@ -1639,7 +1629,7 @@ prepare_move_operands (rtx operands[], machine_mode mode)
         case.  We can pre-allocate R0 for that index term to avoid
         the issue.  See PR target/66591.  */
       else if (sh_lra_p ()
-              && TARGET_SH1 && ! TARGET_SH2A
+              && ! TARGET_SH2A
               && ((REG_P (operands[0]) && MEM_P (operands[1]))
                   || (REG_P (operands[1]) && MEM_P (operands[0]))))
        {
@@ -9590,8 +9580,7 @@ sh_can_follow_jump (const rtx_insn *branch1, const rtx_insn *branch2)
 {
   /* Don't follow if BRANCH2 is possible to be a jump crossing between
      hot and cold partitions.  */
-  if (TARGET_SH1
-      && flag_reorder_blocks_and_partition
+  if (flag_reorder_blocks_and_partition
       && simplejump_p (branch2)
       && CROSSING_JUMP_P (branch2))
     return false;
index 9f104f0bc38dad6cd008d9314e27c2f2b3b22433..31d75e89e92e58510bfc638338551e05c4cfbb1b 100644 (file)
@@ -77,7 +77,7 @@ extern int code_for_indirect_jump_scratch;
 
 /* This is not used by the SH2E calling convention  */
 #define TARGET_VARARGS_PRETEND_ARGS(FUN_DECL) \
-  (TARGET_SH1 && ! TARGET_SH2E \
+  (! TARGET_SH2E \
    && ! (TARGET_HITACHI || sh_attr_renesas_p (FUN_DECL)))
 
 #ifndef TARGET_CPU_DEFAULT
@@ -636,7 +636,7 @@ extern char sh_additional_register_names[ADDREGNAMES_SIZE] \
    || XD_REGISTER_P (REGNO) \
    || (REGNO) == AP_REG || (REGNO) == RAP_REG \
    || (REGNO) == FRAME_POINTER_REGNUM \
-   || (TARGET_SH1 && (SPECIAL_REGISTER_P (REGNO) || (REGNO) == PR_REG)) \
+   || ((SPECIAL_REGISTER_P (REGNO) || (REGNO) == PR_REG)) \
    || (TARGET_SH2E && (REGNO) == FPUL_REG))
 
 /* The mode that should be generally used to store a register by
@@ -1879,8 +1879,7 @@ extern int current_function_interrupt;
 #define PROMOTE_MODE(MODE, UNSIGNEDP, TYPE) \
   if (GET_MODE_CLASS (MODE) == MODE_INT                        \
       && GET_MODE_SIZE (MODE) < 4/* ! UNITS_PER_WORD */)\
-    (UNSIGNEDP) = ((MODE) == SImode ? 0 : (UNSIGNEDP)),        \
-    (MODE) = (TARGET_SH1 ? SImode : DImode);
+    (UNSIGNEDP) = ((MODE) == SImode ? 0 : (UNSIGNEDP)),        (MODE) = SImode;
 
 #define MAX_FIXED_MODE_SIZE (64)
 
index ef903034616ff401e65865396871084a7f4b8310..ad29426adfbc54c65fad46942ce166d5c964f4f6 100644 (file)
                 (match_operand:DI 2 "arith_operand")))]
   ""
 {
-  if (TARGET_SH1)
-    {
-      operands[2] = force_reg (DImode, operands[2]);
-      emit_insn (gen_adddi3_compact (operands[0], operands[1], operands[2]));
-      DONE;
-    }
+  operands[2] = force_reg (DImode, operands[2]);
+  emit_insn (gen_adddi3_compact (operands[0], operands[1], operands[2]));
+  DONE;
 })
 
 (define_insn_and_split "adddi3_compact"
                 (match_operand:SI 2 "arith_or_int_operand")))]
   ""
 {
-  if (TARGET_SH1 && !arith_operand (operands[2], SImode))
+  if (!arith_operand (operands[2], SImode))
     {
       if (!sh_lra_p () || reg_overlap_mentioned_p (operands[0], operands[1]))
        {
                  (match_operand:DI 2 "arith_reg_operand" "")))]
   ""
 {
-  if (TARGET_SH1)
-    {
-      operands[1] = force_reg (DImode, operands[1]);
-      emit_insn (gen_subdi3_compact (operands[0], operands[1], operands[2]));
-      DONE;
-    }
+  operands[1] = force_reg (DImode, operands[1]);
+  emit_insn (gen_subdi3_compact (operands[0], operands[1], operands[2]));
+  DONE;
 })
 
 (define_insn_and_split "subdi3_compact"
                  (match_operand:SI 2 "arith_reg_operand" "")))]
   ""
 {
-  if (TARGET_SH1 && CONST_INT_P (operands[1]))
+  if (CONST_INT_P (operands[1]))
     {
       emit_insn (gen_negsi2 (operands[0], operands[2]));
       emit_insn (gen_addsi3 (operands[0], operands[0], operands[1]));
      Ideally the splitter of *andsi_compact would be enough, if redundant
      zero extensions were detected after the combine pass, which does not
      happen at the moment.  */
-  if (TARGET_SH1)
+
+  if (satisfies_constraint_Jmb (operands[2]))
     {
-      if (satisfies_constraint_Jmb (operands[2]))
-       {
-         emit_insn (gen_zero_extendqisi2 (operands[0],
-                                          gen_lowpart (QImode, operands[1])));
-         DONE;
-       }
-      else if (satisfies_constraint_Jmw (operands[2]))
-       {
-         emit_insn (gen_zero_extendhisi2 (operands[0],
-                                          gen_lowpart (HImode, operands[1])));
-         DONE;
-       }
+      emit_insn (gen_zero_extendqisi2 (operands[0],
+                                       gen_lowpart (QImode, operands[1])));
+      DONE;
+    }
+  else if (satisfies_constraint_Jmw (operands[2]))
+    {
+      emit_insn (gen_zero_extendhisi2 (operands[0],
+                                      gen_lowpart (HImode, operands[1])));
+      DONE;
     }
 })
 
   ""
 {
   prepare_move_operands (operands, DImode);
-  if (TARGET_SH1)
-    {
-      /* When the dest operand is (R0, R1) register pair, split it to
-        two movsi of which dest is R1 and R0 so as to lower R0-register
-        pressure on the first movsi.  Apply only for simple source not
-        to make complex rtl here.  */
-      if (REG_P (operands[0])
-         && REGNO (operands[0]) == R0_REG
-         && REG_P (operands[1])
-         && REGNO (operands[1]) >= FIRST_PSEUDO_REGISTER)
-       {
-         emit_insn (gen_movsi (gen_rtx_REG (SImode, R1_REG),
-                               gen_rtx_SUBREG (SImode, operands[1], 4)));
-         emit_insn (gen_movsi (gen_rtx_REG (SImode, R0_REG),
-                               gen_rtx_SUBREG (SImode, operands[1], 0)));
-         DONE;
-       }
+
+  /* When the dest operand is (R0, R1) register pair, split it to
+     two movsi of which dest is R1 and R0 so as to lower R0-register
+     pressure on the first movsi.  Apply only for simple source not
+     to make complex rtl here.  */
+  if (REG_P (operands[0]) && REGNO (operands[0]) == R0_REG
+      && REG_P (operands[1]) && REGNO (operands[1]) >= FIRST_PSEUDO_REGISTER)
+    {
+      emit_insn (gen_movsi (gen_rtx_REG (SImode, R1_REG),
+                           gen_rtx_SUBREG (SImode, operands[1], 4)));
+      emit_insn (gen_movsi (gen_rtx_REG (SImode, R0_REG),
+                           gen_rtx_SUBREG (SImode, operands[1], 0)));
+      DONE;
     }
 })