aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.target/i386/pr96166.c
blob: 4d020220dc4ed0ab42817abbaf30475245000de2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/* PR target/96166 */
/* { dg-do compile { target { ! ia32 } } } */
/* { dg-options "-O3 -mtune=generic -masm=att" } */
/* { dg-final { scan-assembler "rolq\\s\\\$32, \\\(%\[re]di\\\)" } } */

static inline void
swap (int *x, int *y)
{
  int tmp = *x;
  *x = *y;
  *y = tmp;
}

void
bar (int (*x)[2])
{
  int y[2];
  __builtin_memcpy (&y, x, sizeof *x);
  swap (&y[0], &y[1]);
  __builtin_memcpy (x, &y, sizeof *x);
}