[SH] Simplify cstore patterns

2012-04-05 Thread Oleg Endo
Hi,

The attached patch simplifies the cstore patterns by removing GET_CODE
checks that are already done in sh_expand_t_scc.

Tested against rev 185893 with...
make -k check RUNTESTFLAGS=--target_board=sh-sim
\{-m2/-ml,-m2/-mb,-m2a-single/-mb,
-m4-single/-ml,-m4-single/-mb,
-m4a-single/-ml,-m4a-single/-mb}

...and no new failures.

OK?

Cheers,
Oleg


ChangeLog:

* config/sh/sh.c (sh_expand_t_scc): Change return type from int
to bool.
* config/sh/sh.md (cstoresi4, cstoredi4): Remove GET_CODE checks
before calling sh_expand_t_scc.
Index: gcc/config/sh/sh-protos.h
===
--- gcc/config/sh/sh-protos.h	(revision 185893)
+++ gcc/config/sh/sh-protos.h	(working copy)
@@ -117,7 +117,7 @@
 extern int sh_can_redirect_branch (rtx, rtx);
 extern void sh_expand_unop_v2sf (enum rtx_code, rtx, rtx);
 extern void sh_expand_binop_v2sf (enum rtx_code, rtx, rtx, rtx);
-extern int sh_expand_t_scc (rtx *);
+extern bool sh_expand_t_scc (rtx *);
 extern rtx sh_gen_truncate (enum machine_mode, rtx, int);
 extern bool sh_vector_mode_supported_p (enum machine_mode);
 #endif /* RTX_CODE */
Index: gcc/config/sh/sh.c
===
--- gcc/config/sh/sh.c	(revision 185894)
+++ gcc/config/sh/sh.c	(working copy)
@@ -11942,7 +11942,7 @@
   return val;
 }
 
-int
+bool
 sh_expand_t_scc (rtx operands[])
 {
   enum rtx_code code = GET_CODE (operands[1]);
@@ -11954,21 +11954,21 @@
 
   if (!REG_P (op0) || REGNO (op0) != T_REG
   || !CONST_INT_P (op1))
-return 0;
+return false;
   if (!REG_P (result))
 result = gen_reg_rtx (SImode);
   val = INTVAL (op1);
   if ((code == EQ  val == 1) || (code == NE  val == 0))
 emit_insn (gen_movt (result));
   else if ((code == EQ  val == 0) || (code == NE  val == 1))
-   emit_insn (gen_movnegt (result));
+emit_insn (gen_movnegt (result));
   else if (code == EQ || code == NE)
 emit_insn (gen_move_insn (result, GEN_INT (code == NE)));
   else
-return 0;
+return false;
   if (result != target)
 emit_move_insn (target, result);
-  return 1;
+  return true;
 }
 
 /* INSN is an sfunc; return the rtx that describes the address used.  */
Index: gcc/config/sh/sh.md
===
--- gcc/config/sh/sh.md	(revision 185893)
+++ gcc/config/sh/sh.md	(working copy)
@@ -9575,8 +9575,7 @@
   DONE;
 }
 
-   if ((GET_CODE (operands[1]) == EQ || GET_CODE (operands[1]) == NE)
-sh_expand_t_scc (operands))
+   if (sh_expand_t_scc (operands))
  DONE;
 
if (! currently_expanding_to_rtl)
@@ -9600,8 +9599,7 @@
   DONE;
 }
 
-   if ((GET_CODE (operands[1]) == EQ || GET_CODE (operands[1]) == NE)
-sh_expand_t_scc (operands))
+   if (sh_expand_t_scc (operands))
  DONE;
 
if (! currently_expanding_to_rtl)


Re: [SH] Simplify cstore patterns

2012-04-05 Thread Kaz Kojima
Oleg Endo oleg.e...@t-online.de wrote:
 The attached patch simplifies the cstore patterns by removing GET_CODE
 checks that are already done in sh_expand_t_scc.
 
 Tested against rev 185893 with...
 make -k check RUNTESTFLAGS=--target_board=sh-sim
 \{-m2/-ml,-m2/-mb,-m2a-single/-mb,
 -m4-single/-ml,-m4-single/-mb,
 -m4a-single/-ml,-m4a-single/-mb}
 
 ...and no new failures.
 
 OK?

OK.

Regards,
kaz