[patch] Merge to trunk from Graphite branch
Sebastian Pop
sebpop@gmail.com
Tue Mar 16 18:26:00 GMT 2010
On Tue, Mar 16, 2010 at 08:24, Ira Rosen <IRAR@il.ibm.com> wrote:
> In gas_dyn vectorization fails because Graphite inserts statements in latch
> blocks, e.g. (line 409),
>
> <bb 12>:
> # ivtmp.2047_274 = PHI <ivtmp.2047_275(13), 0(11)>
> D.7535_276 = (integer(kind=8)) ivtmp.2047_274;
> S.26_217 = D.7535_276 + 1;
> D.4310_112 = S.26_217 + -1;
> (*gamma_113(D))[D.4310_112] = D.4292_73;
> if (ivtmp.2047_274 < D.7533_233)
> goto <bb 13>;
> else
> goto <bb 14>;
>
> <bb 13>:
> ivtmp.2047_275 = ivtmp.2047_274 + 1; <============= this statement
> goto <bb 12>;
>
This is due to the fact that we call
loop->single_iv = canonicalize_loop_ivs (loop, &nit);
This function was used only after the vectorizer in parloops:
$ grep canonicalize_loop_ivs *.[ch]
graphite-sese-to-poly.c:2897: loop->single_iv = canonicalize_loop_ivs
(loop, &nit);
tree-flow.h:697:tree canonicalize_loop_ivs (struct loop *, tree *);
tree-parloops.c:1629: canonicalize_loop_ivs (loop, &nit);
tree-ssa-loop-manip.c:1188:canonicalize_loop_ivs (struct loop *loop, tree *nit)
but now it is used in Graphite this should be cleaned up to not
generate the iv bumping in the loop->latch.
Sebastian
More information about the Gcc-patches
mailing list