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;
      12  use_a (struct a *a)
      13  {
      14  }
      15  set_b (int **a)
      16  {
      17    *a=&d;
      18  }
      19  use_c (struct c *a)
      20  {
      21  }
      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;
      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  }