text: extern void abort (void);
  
  void __attribute__((noinline))
  bar (int **p)
  {
    float *q = (float *)p;
    *q = 0.0;
  }
  
  float __attribute__((noinline))
  foo (int b)
  {
    int *i = 0;
    float f = 1.0;
    int **p;
    if (b)
      p = &i;
    else
      p = (int **)&f;
    bar (p);
    if (b)
      return **p;
    return f;
  }
  
  int main()
  {
    if (foo(0) != 0.0)
      abort ();
    return 0;
  }
  
  