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); }