http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50789

Ira Rosen <irar at il dot ibm.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |irar at il dot ibm.com

--- Comment #4 from Ira Rosen <irar at il dot ibm.com> 2011-10-19 09:38:06 UTC 
---
(In reply to comment #3)
> (In reply to comment #2)
> > We have something similar for SLP: if an access is not affine we just fill 
> > in
> > what we can. But I don't really understand what can be filled in for f3/f4.
> 
> Well, we should be able to at least use TBAA in that case:
> void
> f5 (void)
> {
>   int i;
>   for (i = 0; i < N; i++)
>     k[i] += *l[i];
> }
> should be vectorizable too, as l[i] can't overlap k[i] (normal data dep) and
> *l[i], being float read, can't alias with k[i] either (int).

I meant that we can't decompose *l[i] any further.

> With these gather accesses we can't do any runtime alias checking before the
> loop, either we can prove there is no alias, or we can't vectorize.

Agreed.

> 
> > Can't we treat it as an unconditional load for the dr analysis purposes?
> 
> For that surely, but the conditional loads have other problems for the
> vectorizer, currently that means control flow within the loop.  We'd need to
> transform it (perhaps temporarily or using pattern recognizer) to something
> without control flow that would still be clear on that the load is only
> conditional.

Something like this
http://gcc.gnu.org/ml/gcc-patches/2010-11/msg00304.html ?

Reply via email to