OSDN Git Service

PR middle-end/51761
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.c-torture / compile / 20080704-1.c
1 /* This code used to crash fold_convert due to PRE
2    wanting to fold_convert from a REAL_TYPE to an INTEGER_TYPE.  */
3 typedef unsigned int uint32_t;
4 union double_union
5 {
6   double d;
7   uint32_t i[2];
8 };
9 struct _Jv_reent
10 {
11   int _errno;
12 };
13 _Jv_strtod_r (struct _Jv_reent *ptr, char **se)
14 {
15   int bb2, sign;
16   double aadj, aadj1, adj;
17   unsigned long y, z;
18   union double_union rv, *bs = ((void *) 0), *delta = ((void *) 0);
19   {
20   ovfl:ptr->_errno = 34;
21     {
22       (((uint32_t) 0xfffffL) | ((uint32_t) 0x100000L) * (1024 + 1023 - 1));
23     }
24     if ((aadj = _Jv_ratio (delta, bs)) <= 2.)
25       {
26         {
27           if (aadj < 2. / 2)
28             aadj = 1. / 2;
29           aadj1 = -aadj;
30         }
31       }
32     {
33       (rv.i[1]) -= 53 * ((uint32_t) 0x100000L);
34       adj = aadj1 * _Jv_ulp (rv.d);
35       rv.d += adj;
36       if (((rv.i[1]) & ((uint32_t) 0x7ff00000L)) >=
37           ((uint32_t) 0x100000L) * (1024 + 1023 - 53))
38         {
39           goto ovfl;
40         }
41     }
42   }
43 }