OSDN Git Service

* gcc.c-torture/execute/ieee/rbug.c: Force FP to extended-precision
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.c-torture / execute / ieee / rbug.c
1 #if defined(__i386__) && defined(__FreeBSD__)
2 #include <ieeefp.h>
3 #endif
4
5 double d (unsigned long long k)
6 {
7   double x;
8
9   x = (double) k;
10   return x;
11 }
12
13 float s (unsigned long long k)
14 {
15   float x;
16
17   x = (float) k;
18   return x;
19 }
20
21 main ()
22 {
23   unsigned long long int k;
24   double x;
25
26 #if defined(__i386__) && defined(__FreeBSD__)
27   /* This test case assumes extended-precision, but FreeBSD defaults to
28      double-precision.  Make it so.  */
29   fpsetprec (FP_PE);
30 #endif
31
32   if (sizeof (double) >= 8)
33     {
34       k = 0x8693ba6d7d220401ULL;
35       x = d (k);
36       k = (unsigned long long) x;
37       if (k != 0x8693ba6d7d220800ULL)
38         abort ();
39     }
40
41   k = 0x8234508000000001ULL;
42   x = s (k);
43   k = (unsigned long long) x;
44   if (k != 0x8234510000000000ULL)
45     abort ();
46
47   exit (0);
48 }
49