struct S | |
{ | |
int *sp, fc, *sc, a[2]; | |
}; | |
f (struct S *x) | |
{ | |
int *t = x->sc; | |
int t1 = t[0]; | |
int t2 = t[1]; | |
int t3 = t[2]; | |
int a0 = x->a[0]; | |
int a1 = x->a[1]; | |
asm("": :"r" (t2), "r" (t3)); | |
t[2] = t1; | |
t[0] = a1; | |
x->a[1] = a0; | |
x->a[0] = t3; | |
x->fc = t2; | |
x->sp = t; | |
} | |
main () | |
{ | |
struct S s; | |
static int sc[3] = {2, 3, 4}; | |
s.sc = sc; | |
s.a[0] = 10; | |
s.a[1] = 11; | |
f (&s); | |
if (s.sp[2] != 2) | |
abort (); | |
exit (0); | |
} |