OSDN Git Service

2010-02-10 Joost VandeVondele <jv244@cam.ac.uk>
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / pr41963.c
1 /* { dg-do run } */
2 /* { dg-options "-O2 -ffast-math" } */
3
4 extern float fabsf(float);
5 extern float sqrtf(float);
6
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
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 }