This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: conflicts between combine and pre global passes?
On Sat, Apr 28, 2012 at 6:13 PM, Eric Botcazou <ebotcazou@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.