1 /* { dg-additional-options "-fno-early-inlining -fno-ipa-cp" }  */
2 struct a {
3   float *b;
4 } *a;
5 struct b {
6   int *b;
7 } b;
8 struct c {
9   float *b;
10 } *c;
11 int d;
use_a(struct a * a)12 use_a (struct a *a)
13 {
14 }
set_b(int ** a)15 set_b (int **a)
16 {
17   *a=&d;
18 }
use_c(struct c * a)19 use_c (struct c *a)
20 {
21 }
retme(int ** val)22 __attribute__ ((noinline)) int **retme(int **val)
23 {
24   return val;
25 }
26 int e;
27 struct b b= {&e};
28 struct b b2;
29 struct b b3;
30 int **ptr = &b2.b;
main()31 main ()
32 {
33   a= (void *)0;
34   b.b=&e;
35   ptr =retme ( &b.b);
36   set_b (ptr);
37   b3=b;
38   if (b3.b != &d)
39   __builtin_abort ();
40   c= (void *)0;
41   return 0;
42 }
43