Hi,

While doing some other work on the tst insns, I ran into the issue that
in sh-mem.cc the tstsi_t insn is emitted with the const_int operand
being the first operand.  Normally reload fixes this afterwards, but
let's not stress that.
Tested with make -k check RUNTESTFLAGS="--target_board=sh-sim
\{-m2/-ml,-m2/-mb,-m2a/-mb,-m4/-ml,-m4/-mb,-m4a/-ml,-m4a/-mb}"
and no new failures.  Committed as r219342.

Cheers,
Oleg

gcc/ChangeLog:
        * config/sh/sh-mem.cc: Use constant as second operand when emitting
        tstsi_t insns.

Index: gcc/config/sh/sh-mem.cc
===================================================================
--- gcc/config/sh/sh-mem.cc	(revision 219292)
+++ gcc/config/sh/sh-mem.cc	(working copy)
@@ -228,7 +228,7 @@
   if (align < 4)
     {
       emit_insn (gen_iorsi3 (tmp1, s1_addr, s2_addr));
-      emit_insn (gen_tstsi_t (GEN_INT (3), tmp1));
+      emit_insn (gen_tstsi_t (tmp1, GEN_INT (3)));
       jump = emit_jump_insn (gen_branch_false (L_loop_byte));
       add_int_reg_note (jump, REG_BR_PROB, prob_likely);
     }
@@ -373,7 +373,7 @@
 	  if (align < 4)
 	    {
 	      emit_insn (gen_iorsi3 (tmp1, s1_addr, s2_addr));
-	      emit_insn (gen_tstsi_t (GEN_INT (3), tmp1));
+	      emit_insn (gen_tstsi_t (tmp1, GEN_INT (3)));
 	      jump = emit_jump_insn (gen_branch_false (L_loop_byte));
 	      add_int_reg_note (jump, REG_BR_PROB, prob_likely);
 	    }
@@ -581,7 +581,7 @@
 
   if (align < 4)
     {
-      emit_insn (gen_tstsi_t (GEN_INT (3), current_addr));
+      emit_insn (gen_tstsi_t (current_addr, GEN_INT (3)));
       jump = emit_jump_insn (gen_branch_false (L_loop_byte));
       add_int_reg_note (jump, REG_BR_PROB, prob_likely);
     }
@@ -673,7 +673,7 @@
 
       if (align < 4)
 	{
-	  emit_insn (gen_tstsi_t (GEN_INT (3), dest_addr));
+	  emit_insn (gen_tstsi_t (dest_addr, GEN_INT (3)));
 	  jump = emit_jump_insn (gen_branch_false (L_loop_byte));
 	  add_int_reg_note (jump, REG_BR_PROB, prob_likely);
 	}

Reply via email to