http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56121
Oleg Endo <olegendo at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target|sh*-*-* |sh2a-*-*
--- Comment #1 from Oleg Endo <olegendo at gcc dot gnu.org> 2013-01-27 15:44:23
UTC ---
This is an SH2A specific problem.
If I understand correctly, in this case two reloads for the failing bld_reg
insn are required, one for operands[0] and one for operands[1].
Applying the following:
Index: gcc/config/sh/sh.md
===================================================================
--- gcc/config/sh/sh.md (revision 195493)
+++ gcc/config/sh/sh.md (working copy)
@@ -13236,7 +13236,7 @@
(zero_extract:SI (match_operand:SI 0 "arith_reg_operand" "r")
(const_int 1)
(match_operand 1 "const_int_operand" "K03")))]
- "TARGET_SH2A"
+ "TARGET_SH2A && satisfies_constraint_K03 (operands[1])"
"bld %1,%0")
(define_insn "*bld_regqi"
fixes the problem. However, there are more insns of this type that might be
fail and probably should be modified as well...