On Tue, Aug 3, 2010 at 11:38 AM, Alexander Monakov <amona...@ispras.ru> wrote:
>
>
> On Tue, 3 Aug 2010, Bingfeng Mei wrote:
>
>> Thanks, I can reproduce it with trunk compiler but not 4.5.0.
>> Do you know how alias set are represented and used now.
>
> I'm not aware of any changes regarding alias sets.
>
>> It used to
>> be each alias set is assigned a unique number and there won't
>> be a dependence edge drawn between different alias set.
>
> Are you implying that restricted pointers would get different alias sets
> numbers before but don't anymore?  I don't think that this might have changed
> but I may be mistaken (hopefully Richard can clarify this).

Yes, this changed.  In GCC 4.4 and before restrict was implemented
together with type-based alias analysis.  Starting from 4.5 it was
moved to pointer analysis which is more appropriate.

Richard.

>> It seems not
>> to be the case anymore. [2 *a_1(D)+0 S4 A32] The second field
>> must play a role in disambiguate the memory access.
>
> Yes, this is MEM_EXPR which is used to invoke tree alias oracle from RTL.  See
> mem_refs_may_alias_p and its invocations in {true,anti,write}_dependence.  It
> should be much more precise than alias set numbers (but they are still used
> nevertheless).
>
>> BTW, why these two intermediate variables are both assigned to eax
>> without these non-default options? This example has no register pressure.
>> It looks like an issue with IRA.
>
> Well, RA is quite complicated even without considering issues like this.
> Thanks to Vladimir's pressure-sensitive scheduling patches, pre-RA scheduling
> should solve this.
>
> Alexander
>

Reply via email to