On 01/03/16 17:33, Michael Collison wrote: > This patches addresses PR 70014, where the predicates and operand do not > match and could cause problems with the register allocator. Tested > successfully on > > arm-none-linux-gnueabi > arm-none-linux-gnuabihf > armeb-none-linux-gnuabihf > arm-none-eabi > > Okay for trunk? > > 2016-03-01 Michael Collison <michael.colli...@linaro.org> > > PR target/70014 > * config/arm/arm.md (*subsi3_carryin_const): Change predicate > for operand 1 to s_register_operand. Change predicate for operand > 2 to arm_not_immediate_operand. >
OK. R. > > bugzilla-70014-upstream.patch > > > diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md > index e67239d..47171b9 100644 > --- a/gcc/config/arm/arm.md > +++ b/gcc/config/arm/arm.md > @@ -883,8 +883,8 @@ > > (define_insn "*subsi3_carryin_const" > [(set (match_operand:SI 0 "s_register_operand" "=r") > - (minus:SI (plus:SI (match_operand:SI 1 "reg_or_int_operand" "r") > - (match_operand:SI 2 "arm_not_operand" "K")) > + (minus:SI (plus:SI (match_operand:SI 1 "s_register_operand" "r") > + (match_operand:SI 2 "arm_not_immediate_operand" > "K")) > (ltu:SI (reg:CC_C CC_REGNUM) (const_int 0))))] > "TARGET_32BIT" > "sbc\\t%0, %1, #%B2" >