re PR target/51244 ([SH] Inefficient conditional branch and code around T bit)
authorOleg Endo <olegendo@gcc.gnu.org>
Mon, 2 Jul 2012 19:23:56 +0000 (19:23 +0000)
committerOleg Endo <olegendo@gcc.gnu.org>
Mon, 2 Jul 2012 19:23:56 +0000 (19:23 +0000)
commitf031c3441f38fb0c27bb11eae460191e7a2e9e28
tree38e129004dd353049b54d9731e1f700766fd9cde
parent73a156958263b19d5298e56c1c99a6b9df235306
re PR target/51244 ([SH] Inefficient conditional branch and code around T bit)

PR target/51244
* config/sh/predicates.md (t_reg_operand, negt_reg_operand): New
predicates.
* config/sh/sh-protos.h (get_t_reg_rtx): New prototype.
* config/sh/sh.c (get_t_reg_rtx): New function.  Use it when invoking
gen_branch_true and gen_branch_false.
* config/sh/sh.md: Use get_t_reg_rtx when invoking gen_branch_true and
gen_branch_false.
(branch_true, branch_false): Use t_reg_operand predicate.
(*branch_true, *branch_false): Delete.
(movt): Use t_reg_operand predicate.
(*negnegt): Use negt_reg_operand predicate and fold little and big
endian variants.
(*movtt): Use t_reg_operand and fold little and big endian variants.
(*movt_qi): Delete.

PR target/51244
* gcc.target/sh/pr51244-1.c: Check that movt insn is not generated.

From-SVN: r189177
gcc/ChangeLog
gcc/config/sh/predicates.md
gcc/config/sh/sh-protos.h
gcc/config/sh/sh.c
gcc/config/sh/sh.md
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/sh/pr51244-1.c