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