annotate gcc/testsuite/gcc.c-torture/compile/20080704-1.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents 04ced10e8804
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 /* This code used to crash fold_convert due to PRE
kono
parents:
diff changeset
2 wanting to fold_convert from a REAL_TYPE to an INTEGER_TYPE. */
kono
parents:
diff changeset
3 typedef unsigned int uint32_t;
kono
parents:
diff changeset
4 union double_union
kono
parents:
diff changeset
5 {
kono
parents:
diff changeset
6 double d;
kono
parents:
diff changeset
7 uint32_t i[2];
kono
parents:
diff changeset
8 };
kono
parents:
diff changeset
9 struct _Jv_reent
kono
parents:
diff changeset
10 {
kono
parents:
diff changeset
11 int _errno;
kono
parents:
diff changeset
12 };
kono
parents:
diff changeset
13 _Jv_strtod_r (struct _Jv_reent *ptr, char **se)
kono
parents:
diff changeset
14 {
kono
parents:
diff changeset
15 int bb2, sign;
kono
parents:
diff changeset
16 double aadj, aadj1, adj;
kono
parents:
diff changeset
17 unsigned long y, z;
kono
parents:
diff changeset
18 union double_union rv, *bs = ((void *) 0), *delta = ((void *) 0);
kono
parents:
diff changeset
19 {
kono
parents:
diff changeset
20 ovfl:ptr->_errno = 34;
kono
parents:
diff changeset
21 {
kono
parents:
diff changeset
22 (((uint32_t) 0xfffffL) | ((uint32_t) 0x100000L) * (1024 + 1023 - 1));
kono
parents:
diff changeset
23 }
kono
parents:
diff changeset
24 if ((aadj = _Jv_ratio (delta, bs)) <= 2.)
kono
parents:
diff changeset
25 {
kono
parents:
diff changeset
26 {
kono
parents:
diff changeset
27 if (aadj < 2. / 2)
kono
parents:
diff changeset
28 aadj = 1. / 2;
kono
parents:
diff changeset
29 aadj1 = -aadj;
kono
parents:
diff changeset
30 }
kono
parents:
diff changeset
31 }
kono
parents:
diff changeset
32 {
kono
parents:
diff changeset
33 (rv.i[1]) -= 53 * ((uint32_t) 0x100000L);
kono
parents:
diff changeset
34 adj = aadj1 * _Jv_ulp (rv.d);
kono
parents:
diff changeset
35 rv.d += adj;
kono
parents:
diff changeset
36 if (((rv.i[1]) & ((uint32_t) 0x7ff00000L)) >=
kono
parents:
diff changeset
37 ((uint32_t) 0x100000L) * (1024 + 1023 - 53))
kono
parents:
diff changeset
38 {
kono
parents:
diff changeset
39 goto ovfl;
kono
parents:
diff changeset
40 }
kono
parents:
diff changeset
41 }
kono
parents:
diff changeset
42 }
kono
parents:
diff changeset
43 }