https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64909

--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to Jakub Jelinek from comment #5)
> E.g.
> unsigned short a[32];
> unsigned int b[32];
> 
> void
> foo ()
> {
>   b[0] = a[0];
>   b[1] = a[1];
>   b[2] = a[2];
>   b[3] = a[3];
> }
> 
> will do, or b[0] = a[0] + 5; b[1] = a[1] + 5; b[2] = a[2] + 5; b[3] = a[3] +
> 5;
> and similar.

So it first of all boils down to the vectorizer not handling vectors of
different
size (V4HI and V4SI) at the same time.  The same thing happens when you
vectorize
double<->int conversion (for which there is already a bug somewhere).  For loop
vectorization this usually causes unnecessary unrolling (though that may be
profitable in the end).

Reply via email to