[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