1  extern void abort (void);
       2  
       3  static struct X { void *a; void *b; } a, b;
       4  
       5  void __attribute__((noinline)) foo (void)
       6  {
       7    void *tem = a.b;
       8    a.b = (void *)0;
       9    b.b = tem;
      10    b.a = a.a;
      11    a.a = tem;
      12  }
      13  
      14  int main()
      15  {
      16    a.b = &a;
      17    foo ();
      18    if (b.b != &a)
      19      abort ();
      20    return 0;
      21  }