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...