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

--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
(In reply to rguent...@suse.de from comment #2)
> Should already be handled by vectorizing the CTOR.

I've tried:

typedef int __attribute__((vector_size(16))) V;

V
foo (short *a)
{
  return (V){a[0], a[1], a[2], a[3]};
}

V
bar (int *a)
{
  return (V){a[0], a[1], a[2], a[3]};
}

and we don't do a vector (unaligned) read even in bar with -O3
-fno-tree-slp-vectorize, it is just SLP vectorization that makes it vectorize.
If we should handle foo as convertvector, we should handle bar in the same spot
as vector load from memory.

Reply via email to