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).
> 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