1struct S
2{
3  int *sp, fc, *sc, a[2];
4};
5
6f (struct S *x)
7{
8  int *t = x->sc;
9  int t1 = t[0];
10  int t2 = t[1];
11  int t3 = t[2];
12  int a0 = x->a[0];
13  int a1 = x->a[1];
14  asm("": :"r" (t2), "r" (t3));
15  t[2] = t1;
16  t[0] = a1;
17  x->a[1] = a0;
18  x->a[0] = t3;
19  x->fc = t2;
20  x->sp = t;
21}
22
23main ()
24{
25  struct S s;
26  static int sc[3] = {2, 3, 4};
27  s.sc = sc;
28  s.a[0] = 10;
29  s.a[1] = 11;
30  f (&s);
31  if (s.sp[2] != 2)
32    abort ();
33  exit (0);
34}
35