[PATCH, rs6000] Fixing PR 67145

Richard Henderson rth@redhat.com
Mon Feb 29 19:11:00 GMT 2016


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~



More information about the Gcc-patches mailing list