/* { dg-additional-options "-fno-early-inlining -fno-ipa-cp" } */ | |
struct a { | |
float *b; | |
} *a; | |
struct b { | |
int *b; | |
} b; | |
struct c { | |
float *b; | |
} *c; | |
int d; | |
use_a (struct a *a) | |
{ | |
} | |
set_b (int **a) | |
{ | |
*a=&d; | |
} | |
use_c (struct c *a) | |
{ | |
} | |
__attribute__ ((noinline)) int **retme(int **val) | |
{ | |
return val; | |
} | |
int e; | |
struct b b= {&e}; | |
struct b b2; | |
struct b b3; | |
int **ptr = &b2.b; | |
main () | |
{ | |
a= (void *)0; | |
b.b=&e; | |
ptr =retme ( &b.b); | |
set_b (ptr); | |
b3=b; | |
if (b3.b != &d) | |
__builtin_abort (); | |
c= (void *)0; | |
return 0; | |
} |