// { dg-do compile }
// { dg-options "-O2 -fno-thread-jumps -fdump-tree-evrp" }

extern void link_error ();

void fast_sqrt (float);

float test (float x)
{
    float y = x*x;
    if (y >= 0.f)
      { 
        if (__builtin_isnan (y))
         link_error ();
        else
          fast_sqrt (y);

       if (!__builtin_isnan (y))
         fast_sqrt (y);
       else
         link_error ();
      }
}

// { dg-final { scan-tree-dump-times "fast_sqrt" 2 "evrp" } }
// { dg-final { scan-tree-dump-not "link_error" "evrp" } }