text: /* { dg-do run } */
  /* { dg-require-effective-target arm_neon_hw } */
  /* { dg-options "-fno-omit-frame-pointer -mapcs-frame -O" }
  /* { dg-add-options arm_neon } */
  
  extern void abort (void);
  
  float data;
  
  void __attribute__((noinline, noclone)) bar (float f)
  {
    data = f;
  }
  
  float __attribute__((noinline, noclone)) foo (float f)
  {
    int error_reported = 0;
  
    void __attribute__((noinline, noclone)) 
    nested (int a, int b, int c, int d, float f0, float f1, float f2, float f3)
    {
      float e;
  
      if (f3 > f2)
        e = f3;
      else
        e = f2;
  
      if (f0 - f1 > e)
        {
  	error_reported = a + b + c + d;
  	bar (f0);
  	bar (e);
        }
    }
  
    nested (1, 2, 3, 4, 1.0, 1.0, 3.5, 4.2);
    return f + (float)error_reported;
  }
  
  #define PI 3.1415927f
  
  int main (void)
  {
    if (foo (PI) != PI)
      abort ();
    return 0;
  }
  