This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]