On Thu, Jan 5, 2012 at 9:34 AM, Jiangning Liu <jiangning....@arm.com> wrote: >> >> > In final value replacement, expression "&a + D.xxxx" can be >> figured >> >> out, >> >> > while "&a[i_xxx]" failed to be CHRECed, so I'm wondering if we >> should >> >> > lower >> >> > &a[i_xxx] to "&a + unitsize(a) * i_xxx" first? It seems GCC >> intends >> >> to >> >> > keep >> >> > &a[i_xxx] until cfgexpand pass. > > Richard, > > Thanks a lot for your explanation! > > Any comments for this question as well? Does GCC intends to keep &a[i] until > expand pass?
It's kept as it suits - it's shorter and easier to analyze (we know the implicit multiplication won't overflow) > Any special reason? If I change CHREC algorithm, I see ivopt > would have done this lowering, so we wouldn't see &a[i] in expand pass. Any > hurt? No, I think changing the CHREC algorithm is ok (I didn't look closely at your patch). This is stage1 material though. Thanks, Richard. > Thanks, > -Jiangning > > > >