On Thu, May 19, 2016 at 10:12 AM, Kugan Vivekanandarajah
<kugan.vivekanandara...@linaro.org> wrote:
> Hi Martin,
>
> Thanks for the fix. Just to elaborate (as mentioned in PR)
>
> At tree-ssa-reassoc.c:3897, we have:
>
> stmt:
> _15 = _4 + c_7(D);
>
> oe->op def_stmt:
> _17 = c_7(D) * 3;
>
>
> <bb 2>:
> a1_6 = s_5(D) * 2;
> _1 = (long int) a1_6;
> x1_8 = _1 + c_7(D);
> a2_9 = s_5(D) * 4;
> _2 = (long int) a2_9;
> a3_11 = s_5(D) * 6;
> _3 = (long int) a3_11;
> _16 = x1_8 + c_7(D);
> _18 = _1 + _2;
> _4 = _16 + _2;
> _15 = _4 + c_7(D);
> _17 = c_7(D) * 3;
> x_13 = _15 + _3;
> return x_13;
>
>
> The root cause of this the place in which we are adding (_17 = c_7(D)
> * 3). Finding the right place is not always straightforward as this
> case shows.
>
> We could try  Martin Liška's approach, We could also move _17 = c_7(D)
> * 3; at tree-ssa-reassoc.c:3897 satisfy the gcc_assert. We could do
> this based on the use count of _17.
>
>
> This patch does this. I have no preferences. Any thoughts ?

I think the issue may be that you fail to set changed to true for the
degenerate case of ending up with a multiply only.

Not sure because neither patch contains a testcase.

Richard.

>
> Thanks,
> Kugan
>
>
>
> On 19 May 2016 at 18:04, Martin Liška <mli...@suse.cz> wrote:
>> Hello.
>>
>> Following patch fixes the ICE as it defensively finds the right
>> place where a new STMT should be inserted.
>>
>> Patch bootstraps on x86_64-linux-gnu and no new regression is introduced.
>>
>> Ready for trunk?
>> Thanks,
>> Martin

Reply via email to