On Wed, Jul 6, 2016 at 11:50 AM, Yuri Rumyantsev <[email protected]> wrote:
> Richard,
>
> I pointed out in the commentary that REF is defined inside loop and
> this check is related to this statement. Should I clarify it?
>
> + /* We consider REF defined in LOOP as independent if at least 2 loop
> + iterations are not dependent. */
Yes, I fail to see why x[0] should not be disambiguated against y[i] in
#pragma GCC loop ivdep
for (i...)
{
y[i] = ...;
for (j...)
... = x[0];
}
REF is always inside the loop nest with LOOP being the outermost loop.
Richard.
>
> 2016-07-06 12:38 GMT+03:00 Richard Biener <[email protected]>:
>> On Tue, Jul 5, 2016 at 4:56 PM, Yuri Rumyantsev <[email protected]> wrote:
>>> Hi All,
>>>
>>> Here is a simple fix to cure regressions introduced by my fix for
>>> 70729. Patch also contains minor changes in test found by Jakub.
>>>
>>> Bootstrapping and regression testing did not show any new failures.
>>>
>>> Is it OK for trunk?
>>
>> + && bitmap_bit_p (&memory_accesses.refs_in_loop[loop->num], ref->id))
>>
>> So safelen does not apply to refs in nested loops? The added comment only
>> explains the safelen check change but this also requires explanation.
>>
>> Richard.
>>
>>> ChangeLog:
>>> 2016-07-05 Yuri Rumyantsev <[email protected]>
>>>
>>> PR tree-optimization/71734
>>> * tree-ssa-loop-im.c (ref_indep_loop_p_1): Consider REF defined in
>>> LOOP as independent if at least two loop iterations are not dependent.
>>> gcc/testsuite/ChangeLog:
>>> * g++.dg/vect/pr70729.cc: Delete redundant dg options, fix style.