Dorit Nuzman/Haifa/IBM wrote on 18/02/2008 09:40:37:
> Thanks a lot for tracking down / opening the relevant PRs. > > about: > > > > (6) loop distribution is required to break a dependence. This may > > > already be handled by Sebastian's loop-distribution pass that will > > > be incorporated in 4.4. > > > Here is an example: > > > for (i__ = 2; i__ <= i__2; ++i__) > > > { > > > a[i__] += c__[i__] * d__[i__]; > > > b[i__] = a[i__] + d__[i__] + b[i__ - 1]; > > > } > > > This happens in the loop in line 2136. > > > Need to check if we need to open a missed optimization PR for this. > > > > I don't think that this is a loop distribution issue. The dependence > > between the store to a[i] and the load from a[i] doesn't prevent > > vectorization. > > right, > > > The problematic one is between the store to b[i] and > > the load from b[i-1] in the second statement. > > ...which is exactly why loop distribution could make this loop > (partially) vectorizable - separating the first and second > statements into separate loops would allow vectorizing the first of > the two resulting loops (which is probably what icc does - icc > reports that this loop is partially vectrizable). Yes, I see now. I applied Sebastian's patch ( http://gcc.gnu.org/ml/gcc-patches/2007-12/msg00215.html) and got "FIXME: Loop 1 not distributed: failed to build the RDG." Ira > > dorit >