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

--- Comment #5 from Jakub Jelinek <jakub at gcc dot gnu.org> 2012-02-28 
12:02:18 UTC ---
Triggered by http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=184435
Testcase:
/* PR target/52407 */

extern void abort (void);

typedef long long V __attribute__ ((vector_size (16)));
V ul[4], vl[4] = { {1, 2}, {3, 4}, {5, 6}, {7, 8} };

static void
foo (V *u, V *v, long long x, int m)
{
  V w;
  long long *p = (long long *) &w;
  p[0] = p[1] = x;
  while (m--)
    *u++ = *v++ * w;
}

int
main ()
{
  int i;
  long long *pl;

  pl = (long long *) &ul;
  foo (ul, vl, 2, 4);
  for (i = 0; i < 8; i++)
    if (pl[i] != 2 * (i + 1))
      abort ();
  return 0;
}

Reply via email to