------- Comment #27 from rakdver at kam dot mff dot cuni dot cz 2010-07-07 11:31 ------- Subject: Re: [4.6 regression] RTL loop unrolling causes FAIL: gcc.dg/pr39794.c
> Due to SSA form the alias information reflects dependencies only between > accesses as if it ignores back edges. Well, this is closer to what I was asking for; so, the actual definition that we use is: Two memory references M1 and M2 (appearing in statements S1 and S2) if for every code execution path P, and every appearance A1 of S1 and A2 of S2 in P such that no backedge is taken between A1 and A2, the memory locations accessed in A1 and A2 are different. Still, this is somewhat ambiguous (in the presence of irreducible loops, it is not quite clear what is a backedge). > Hence any transformation that > transforms a back edge into a forward edge, or moves code over back edges > needs to do adjustment to the alias info (effectively doing something like > PHI translation, or making the alias info simply more imprecise). Hmpf. It is kind of unpleasant that this affects optimizations like loop unrolling, which should make sheduling better (but likely won't do as well if we have to just throw away the results of alias analysis). -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=44838