Rebase.
[official-gcc.git] / gcc / testsuite / gcc.target / i386 / pr51987.c
blob6ac2e6395d8b3fd99b7d31502323a05108564848
1 /* PR tree-optimization/51987 */
2 /* { dg-do run { target { ! { ia32 } } } } */
3 /* { dg-options "-O3" } */
5 extern void abort (void);
6 union U { unsigned long long l; struct { unsigned int l, h; } i; };
8 __attribute__((noinline, noclone)) void
9 foo (char *x, char *y)
11 int i;
12 for (i = 0; i < 64; i++)
14 union U u;
15 asm ("movl %1, %k0; salq $32, %0" : "=r" (u.l) : "r" (i));
16 x[i] = u.i.h;
17 union U v;
18 asm ("movl %1, %k0; salq $32, %0" : "=r" (v.l) : "r" (i));
19 y[i] = v.i.h;
23 int
24 main ()
26 char a[64], b[64];
27 int i;
28 foo (a, b);
29 for (i = 0; i < 64; i++)
30 if (a[i] != i || b[i] != i)
31 abort ();
32 return 0;