On Sat, Apr 28, 2012 at 6:13 PM, Eric Botcazou <ebotca...@adacore.com> wrote: >> Yes, the reason here should be the pattern for insn 79 has predicates on >> its operands and does not allow constant here. > > And there is no way to get rid of the 2 pluses and thus change the pattern? > > -- > Eric Botcazou
The instruction is generated according to cstoresi4/addsi_addgeu pattern during expanding. ;; Used as part of the expansion of thumb les sequence. (define_insn "thumb1_addsi3_addgeu" [(set (match_operand:SI 0 "s_register_operand" "=l") (plus:SI (plus:SI (match_operand:SI 1 "s_register_operand" "%0") (match_operand:SI 2 "s_register_operand" "l")) (geu:SI (match_operand:SI 3 "s_register_operand" "l") (match_operand:SI 4 "thumb1_cmp_operand" "lI"))))] "TARGET_THUMB1" "cmp\\t%3, %4\;adc\\t%0, %1, %2" [(set_attr "length" "4")] ) I am not sure this kind of pattern benefits in other cases, but not in this one. Thanks. -- Best Regards.