On 12/04/14 13:57, Segher Boessenkool wrote:
So combine tries to combine 6+7+8; the RTL it comes up with is a parallel
of the memory decrement (without cc clobber, but that is fine), and setting
r88 to the mem minus one. There is no such pattern in the target, and
combine cannot break the parallel into two sets (because the first modifies
the mem used by the second), so 6+7+8 doesn't combine.
Adding a bridge pattern in the target would work; or you can enhance combine
so it can break up this parallel correctly.
I think myself or someone suggested a bridge pattern in the past, but I
can't find it, perhaps it was one of the other threads WRT limitations
of the combiner.
Zhenqiang, can you look at what happens if you provide a pattern for
6+7+8 (probably via a define_and_split)?
Jeff