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 >