@@ -867,7 +867,7 @@
(define_insn "*subsi3_carryin"
[(set (match_operand:SI 0 "s_register_operand" "=r,r")
- (minus:SI (minus:SI (match_operand:SI 1 "reg_or_int_operand" "r,I")
+ (minus:SI (minus:SI (match_operand:SI 1 "reg_or_arm_rhs_operand" "r,I")
(match_operand:SI 2 "s_register_operand" "r,r"))
(ltu:SI (reg:CC_C CC_REGNUM) (const_int 0))))]
"TARGET_32BIT"
@@ -144,6 +144,11 @@
(and (match_code "const_int")
(match_test "INTVAL (op) == 0")))
+(define_predicate "reg_or_arm_rhs_operand"
+ (ior (match_operand 0 "s_register_operand")
+ (and (match_test "TARGET_ARM")
+ (match_operand 0 "arm_immediate_operand"))))
+
;; Something valid on the RHS of an ARM data-processing instruction
(define_predicate "arm_rhs_operand"
(ior (match_operand 0 "s_register_operand")
--
1.9.1