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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |jakub at gcc dot gnu.org

--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Simpler testcase with no vector type casts which is also works for both
endians:

typedef unsigned char __attribute__((__vector_size__ (16))) U;

U u;

U
foo (void)
{
  U y = (U) { 0x80, 0xff, 0xff, 0xff, 0x80, 0xff, 0xff, 0xff,
              0x80, 0xff, 0xff, 0xff, 0x80, 0xff, 0xff, 0xff } + u;
  return y;
}

int
main ()
{
  U x = (U) foo ();
  for (unsigned i = 0; i < 16; i++)
    if (x[i] != ((i & 3) ? 0xff : 0x80))
      __builtin_abort ();
  return 0;
}

Reply via email to