1 /* { dg-do compile } */ 2 /* { dg-options "-O -fipa-sra" } */ 3 4 struct A 5 { 6 int *p; AA7 A() {p = (int *) -1;} ~AA8 ~A() {if (p && p != (int *) -1) *p = 0;} 9 }; 10 11 struct B 12 { 13 A a; 14 char data[23]; BB15 B() : a() {data[0] = 0;} 16 }; 17 18 extern A ga; 19 extern int *gi; 20 extern void *gz; 21 extern B *gb; 22 foo(B * b,void * z)23static int * __attribute__ ((noinline)) foo (B *b, void *z) 24 { 25 __builtin_memcpy (gz, z, 28); 26 ga = b->a; 27 return b->a.p; 28 } 29 bar(B * b,void * z)30int *bar (B *b, void *z) 31 { 32 gb = b; 33 return foo (b, z); 34 } 35