On Mon, Feb 29, 2016 at 11:11:11AM -0800, Richard Henderson wrote: > >>> If you check for fixed registers as well here, does that work for you? > >> > >> Maybe. It prevents canonicalization of reg+fp vs fp+reg, which could well > >> occur via arithmetic on locally allocated arrays. > > > > Where are these canonicalization rules described? > > swap_commutative_operands_p?
That function never swaps reg+reg, or I don't see it. > > It is stage 4. This rs6000 change has almost 100% chance of introducing > > regressions. > > Really? Nearly 100%? > > Ignoring the change to subf<>3_carry_in_m1 for a moment, how do any of the > other changes result in the non-recognition of rtl that was previously valid? > As far as I can see we only accept more rtl. It's changing a lot of backend patterns. There can and will be side effects. You're replacing a lot of RTL generation by open-coded stuff, that's the wrong direction. You're putting all the risk on a different backend for fixing a minor regression in x86. Segher