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