On 02/26/2016 01:52 PM, Segher Boessenkool wrote: > On Fri, Feb 26, 2016 at 01:35:10PM -0800, Richard Henderson wrote: >> On 02/26/2016 01:03 PM, Segher Boessenkool wrote: >>> On Thu, Feb 25, 2016 at 09:08:32PM -0800, Richard Henderson wrote: >>>> + /* Perform rematerialization if only all operands are registers and >>>> + all operations are PLUS. */ >>>> + for (i = 0; i < n_ops; i++) >>>> + if (ops[i].neg || !REG_P (ops[i].op)) >>>> + return NULL_RTX; >>>> + goto gen_result; >>>> + } >>> >>> 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? > 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. r~