On Thu, Dec 04, 2014 at 02:57:56PM -0600, Segher Boessenkool wrote: > Adding a bridge pattern in the target would work; or you can enhance combine > so it can break up this parallel correctly.
I also investigated that second option. The enhancement transforms the combine result M = XXX :: T = XXX into M = XXX T = M and then the set of T can combine with its later use (the compare), but it won't ever combine that with the store to M: there is never a link for memory, only for registers. Never mind that this is unsuitable for many targets anyway (it creates a read-after-write hazard). Segher