This is the mail archive of the
mailing list for the GCC project.
Re: [RFC] Combine related fail of gcc.target/powerpc/ti_math1.c
- From: Richard Henderson <rth at redhat dot com>
- To: Segher Boessenkool <segher at kernel dot crashing dot org>, gcc at gcc dot gnu dot org, Alan Modra <amodra at gmail dot com>
- Date: Thu, 21 May 2015 11:34:14 -0700
- Subject: Re: [RFC] Combine related fail of gcc.target/powerpc/ti_math1.c
- Authentication-results: sourceware.org; auth=none
- References: <20150521103604 dot GK6140 at bubble dot grove dot modra dot org> <20150521123916 dot GA26096 at gate dot crashing dot org>
On 05/21/2015 05:39 AM, Segher Boessenkool wrote:
>> > Trying 18, 9 -> 24:
>> > Failed to match this instruction:
>> > (set (reg:DI 4 4 [+8 ])
>> > (plus:DI (plus:DI (reg:DI 5 5 [ val+8 ])
>> > (reg:DI 76 ca))
>> > (reg:DI 169 [+8 ])))
> For some reason it has the CA reg not last. I think we should add to
> the canonicalisation rules so that fixed regs sort after other regs.
> That requires a lot of testing.
Actually, I believe that the way CA is modeled at the moment is dangerous.
It's not a 64-bit value, but a 1-bit value.
If we rearrange the expanded rtl to be (zero_extend:DI (reg:BI CA)), then
normal canonicalization rules will apply and it'll always appear first in the
chain of PLUS.