On Fri, Apr 06, 2012 at 05:25:15PM +0200, Olivier Hainque wrote:
> Have you discovered where the problem you are still observing
> is coming from (with another case on 4.4) ? I was planning to look
> into it and realized that maybe you were already doing so.
In gcc-4.4, alias.c:write_dependence_p has
if (DIFFERENT_ALIAS_SETS_P (x, mem))
immediately after the tests for (mem:BLK (scratch)) and
ALIAS_SET_MEMORY_BARRIER. On find_num.c the read from the stack arr
is alias set 3, the stack tie is alias set 2, so they are seen as not
For mainline we have the same alias sets but with the addresses
involved, (unspec [reg 1] UNSPEC_TIE) and (plus (reg 9) (reg 3)), we
run all the way down to rtx_refs_may_alias_p where ao_ref_from_mem for
the stack tie returns false. So anti_dependence returns true.
Hmm, the fact that alias analysis on mainline treats my fancy barriers
like this says I may as well have not bothered. (mem:BLK (scratch))
performs identically at the moment.
Australia Development Lab, IBM