annotate gcc/testsuite/gcc.c-torture/compile/950922-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 struct sw {
kono
parents:
diff changeset
2 const void *x;
kono
parents:
diff changeset
3 int r;
kono
parents:
diff changeset
4 };
kono
parents:
diff changeset
5 struct sq {
kono
parents:
diff changeset
6 struct sw *q_w;
kono
parents:
diff changeset
7 int t;
kono
parents:
diff changeset
8 int z;
kono
parents:
diff changeset
9 };
kono
parents:
diff changeset
10
kono
parents:
diff changeset
11 int
kono
parents:
diff changeset
12 f (int ch, char *fp, char *ap)
kono
parents:
diff changeset
13 {
kono
parents:
diff changeset
14 register int n;
kono
parents:
diff changeset
15 register char *cp;
kono
parents:
diff changeset
16 register struct sw *p;
kono
parents:
diff changeset
17 register int f;
kono
parents:
diff changeset
18 int prec;
kono
parents:
diff changeset
19 double _double;
kono
parents:
diff changeset
20 int expt;
kono
parents:
diff changeset
21 int ndig;
kono
parents:
diff changeset
22 char expstr[7];
kono
parents:
diff changeset
23 unsigned long long _uquad;
kono
parents:
diff changeset
24 struct sq q;
kono
parents:
diff changeset
25 struct sw w[8];
kono
parents:
diff changeset
26 static char zeroes[16];
kono
parents:
diff changeset
27
kono
parents:
diff changeset
28 for (;;) {
kono
parents:
diff changeset
29 switch (ch) {
kono
parents:
diff changeset
30 case 'd':
kono
parents:
diff changeset
31 _double = (double) (ap += 8, *((double *) (ap - 8)));
kono
parents:
diff changeset
32 break;
kono
parents:
diff changeset
33 case 'o':
kono
parents:
diff changeset
34 goto nosign;
kono
parents:
diff changeset
35 case 'u':
kono
parents:
diff changeset
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))));
kono
parents:
diff changeset
37 goto nosign;
kono
parents:
diff changeset
38 case 'x':
kono
parents:
diff changeset
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))));
kono
parents:
diff changeset
40 nosign:
kono
parents:
diff changeset
41 if (_uquad != 0 || prec != 0);
kono
parents:
diff changeset
42 break;
kono
parents:
diff changeset
43 default:;
kono
parents:
diff changeset
44 }
kono
parents:
diff changeset
45 if ((f & 0x100) == 0) {
kono
parents:
diff changeset
46 } else {
kono
parents:
diff changeset
47 if (ch >= 'f') {
kono
parents:
diff changeset
48 if (_double == 0) {
kono
parents:
diff changeset
49 if (expt < ndig || (f & 0x001) != 0) {
kono
parents:
diff changeset
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; }}}}
kono
parents:
diff changeset
51 }
kono
parents:
diff changeset
52 } else if (expt <= 0) {
kono
parents:
diff changeset
53 { p->x = ("0"); p->r = 1; q.z += 1; p++; if (++q.t >= 8) { if (g(fp, &q)) goto error; p = w; }}
kono
parents:
diff changeset
54 { p->x = 0; p->r = 1; q.z += 1; p++; if (++q.t >= 8) { if (g(fp, &q)) goto error; p = w; }}
kono
parents:
diff changeset
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; }} }}
kono
parents:
diff changeset
56 { p->x = cp; p->r = ndig; q.z += ndig; p++; if (++q.t >= 8) { if (g(fp, &q)) goto error; p = w; }}
kono
parents:
diff changeset
57 } else {
kono
parents:
diff changeset
58 { p->x = cp; p->r = expt; q.z += expt; p++; if (++q.t >= 8) { if (g(fp, &q)) goto error; p = w; }}
kono
parents:
diff changeset
59 cp += expt;
kono
parents:
diff changeset
60 { p->x = ("."); p->r = 1; q.z += 1; p++; if (++q.t >= 8) { if (g(fp, &q)) goto error; p = w; }}
kono
parents:
diff changeset
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; }}
kono
parents:
diff changeset
62 }
kono
parents:
diff changeset
63 }
kono
parents:
diff changeset
64 }
kono
parents:
diff changeset
65 }
kono
parents:
diff changeset
66
kono
parents:
diff changeset
67 error:;
kono
parents:
diff changeset
68 }