1 /* { dg-do run } */
2 /* { dg-options "-O2 -ffast-math" } */
3 
4 extern float fabsf(float);
5 extern float sqrtf(float);
6 
f(float * dst,float * src)7 static __attribute__((noinline)) void f (float *dst, float *src)
8 {
9   int i, j;
10   for (i = 0; i < 2; i++)
11     {
12       float len;
13       dst[0] = src[0];
14       dst[1] = src[1];
15       len = sqrtf (dst[0] * dst[0] + dst[1] * dst[1]);
16       if (len > 0.5f)
17 	{
18 	  len = 1.0f / len;
19 	  dst[0] *= len;
20 	  dst[1] *= len;
21 	}
22     }
23 }
24 
25 extern void abort (void);
26 
main()27 int main()
28 {
29   float dst[2], src[2];
30   src[0] = 2.0f;
31   src[1] = 5.0f;
32   f (dst, src);
33   if (fabsf (dst[0] * dst[0] + dst[1] * dst[1] - 1.0f) > 0.01f)
34     abort ();
35   return 0;
36 }
37