1 struct S
2 {
3   int *sp, fc, *sc, a[2];
4 };
5 
f(struct S * x)6 f (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 
main()23 main ()
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