Mercurial > hg > CbC > CbC_gcc
comparison gcc/testsuite/gcc.c-torture/compile/950922-1.c @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
68:561a7518be6b | 111:04ced10e8804 |
---|---|
1 struct sw { | |
2 const void *x; | |
3 int r; | |
4 }; | |
5 struct sq { | |
6 struct sw *q_w; | |
7 int t; | |
8 int z; | |
9 }; | |
10 | |
11 int | |
12 f (int ch, char *fp, char *ap) | |
13 { | |
14 register int n; | |
15 register char *cp; | |
16 register struct sw *p; | |
17 register int f; | |
18 int prec; | |
19 double _double; | |
20 int expt; | |
21 int ndig; | |
22 char expstr[7]; | |
23 unsigned long long _uquad; | |
24 struct sq q; | |
25 struct sw w[8]; | |
26 static char zeroes[16]; | |
27 | |
28 for (;;) { | |
29 switch (ch) { | |
30 case 'd': | |
31 _double = (double) (ap += 8, *((double *) (ap - 8))); | |
32 break; | |
33 case 'o': | |
34 goto nosign; | |
35 case 'u': | |
36 _uquad = (f & 0x020 ? (ap += 8, *((long long *) (ap - 8))) : f & 0x010 ? (ap += 4, *((long *) (ap - 4))) : f & 0x040 ? (long)(short)(ap += 4, *((int *) (ap - 4))) : (long)(ap += 4, *((int *) (ap - 4)))); | |
37 goto nosign; | |
38 case 'x': | |
39 _uquad = (f & 0x020 ? (ap += 8, *((long long *) (ap - 8))) : f & 0x010 ? (ap += 4, *((long *) (ap - 4))) : f & 0x040 ? (long)(unsigned short)(ap += 4, *((int *) (ap - 4))) : (long)(ap += 4, *((int *) (ap - 4)))); | |
40 nosign: | |
41 if (_uquad != 0 || prec != 0); | |
42 break; | |
43 default:; | |
44 } | |
45 if ((f & 0x100) == 0) { | |
46 } else { | |
47 if (ch >= 'f') { | |
48 if (_double == 0) { | |
49 if (expt < ndig || (f & 0x001) != 0) { | |
50 { if ((n = (ndig - 1)) > 0) { while (n > 16) {{ p->x = (zeroes); p->r = 16; q.z += 16; p++; if (++q.t >= 8) { if (g(fp, &q)) goto error; p = w; }} n -= 16; }{ p->x = (zeroes); p->r = n; q.z += n; p++; if (++q.t >= 8) { if (g(fp, &q)) goto error; p = w; }}}} | |
51 } | |
52 } else if (expt <= 0) { | |
53 { p->x = ("0"); p->r = 1; q.z += 1; p++; if (++q.t >= 8) { if (g(fp, &q)) goto error; p = w; }} | |
54 { p->x = 0; p->r = 1; q.z += 1; p++; if (++q.t >= 8) { if (g(fp, &q)) goto error; p = w; }} | |
55 { if ((n = (-expt)) > 0) { while (n > 16) {{ p->x = (zeroes); p->r = 16; q.z += 16; p++; if (++q.t >= 8) { if (g(fp, &q)) goto error; p = w; }} n -= 16; }{ p->x = (zeroes); p->r = n; q.z += n; p++; if (++q.t >= 8) { if (g(fp, &q)) goto error; p = w; }} }} | |
56 { p->x = cp; p->r = ndig; q.z += ndig; p++; if (++q.t >= 8) { if (g(fp, &q)) goto error; p = w; }} | |
57 } else { | |
58 { p->x = cp; p->r = expt; q.z += expt; p++; if (++q.t >= 8) { if (g(fp, &q)) goto error; p = w; }} | |
59 cp += expt; | |
60 { p->x = ("."); p->r = 1; q.z += 1; p++; if (++q.t >= 8) { if (g(fp, &q)) goto error; p = w; }} | |
61 { p->x = cp; p->r = (ndig-expt); q.z += (ndig-expt); p++; if (++q.t >= 8) { if (g(fp, &q)) goto error; p = w; }} | |
62 } | |
63 } | |
64 } | |
65 } | |
66 | |
67 error:; | |
68 } |