(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.target/
i386/
pr51987.c
       1  /* PR tree-optimization/51987 */
       2  /* { dg-do run { target { ! ia32 } } } */
       3  /* { dg-options "-O3" } */
       4  
       5  extern void abort (void);
       6  union U { unsigned long long l; struct { unsigned int l, h; } i; };
       7  
       8  __attribute__((noinline, noclone)) void
       9  foo (char *x, char *y)
      10  {
      11    int i;
      12    for (i = 0; i < 64; i++)
      13      {
      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;
      20      }
      21  }
      22  
      23  int
      24  main ()
      25  {
      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;
      33  }