This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: fwprop fix for PR79405
On Wed, Feb 22, 2017 at 6:19 PM, Jeff Law <law@redhat.com> wrote:
> On 02/16/2017 12:41 PM, Bernd Schmidt wrote:
>>
>> We have two registers being assigned to each other:
>>
>> (set (reg 213) (reg 209))
>> (set (reg 209) (reg 213))
>>
>> These being the only definitions, we are happy to forward propagate reg
>> 209 for reg 213 into a third insn, making a new use for reg 209. We are
>> then happy to forward propagate reg 213 for it in the same insn...
>> ending up in an infinite loop.
>>
>> I don't really see an elegant way to prevent this, so the following just
>> tries to detect the situation (and more general ones) by brute force.
>> Bootstrapped and tested on x86_64-linux, verified that the test passes
>> with a ppc cross, ok?
>>
>>
>> Bernd
>>
>>
>> 79405.diff
>>
>>
>> PR rtl-optimization/79405
>> * fwprop.c (forward_propagate_into): Detect potentially cyclic
>> replacements and bail out for them.
>>
>> PR rtl-optimization/79405
>> * gcc.dg/torture/pr79405.c: New test.
>
> OK.
Err - this looks quite costly done for each fwprop. And placing it before
less costly bailouts even...
See my discussion with Bernd anyway.
Richard.
> jeff
>