annotate gcc/testsuite/gcc.c-torture/compile/20030904-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 A
kono
parents:
diff changeset
2 {
kono
parents:
diff changeset
3 long a1;
kono
parents:
diff changeset
4 double *a2;
kono
parents:
diff changeset
5 };
kono
parents:
diff changeset
6
kono
parents:
diff changeset
7 struct B
kono
parents:
diff changeset
8 {
kono
parents:
diff changeset
9 void *b1;
kono
parents:
diff changeset
10 double b2, b3;
kono
parents:
diff changeset
11 struct
kono
parents:
diff changeset
12 {
kono
parents:
diff changeset
13 int d1;
kono
parents:
diff changeset
14 double d2;
kono
parents:
diff changeset
15 } b4;
kono
parents:
diff changeset
16 };
kono
parents:
diff changeset
17
kono
parents:
diff changeset
18 struct C
kono
parents:
diff changeset
19 {
kono
parents:
diff changeset
20 struct A *c1;
kono
parents:
diff changeset
21 void *c2;
kono
parents:
diff changeset
22 };
kono
parents:
diff changeset
23
kono
parents:
diff changeset
24 long fn1 (struct A *, double);
kono
parents:
diff changeset
25 void fn2 (void *, const char *);
kono
parents:
diff changeset
26 double fn3 (double);
kono
parents:
diff changeset
27 double fn4 (double);
kono
parents:
diff changeset
28 int fn5 (void *, double, double);
kono
parents:
diff changeset
29
kono
parents:
diff changeset
30 int
kono
parents:
diff changeset
31 foo (struct B *x)
kono
parents:
diff changeset
32 {
kono
parents:
diff changeset
33 struct C *e = x->b1;
kono
parents:
diff changeset
34 struct A *f = e->c1;
kono
parents:
diff changeset
35 long g, h, i;
kono
parents:
diff changeset
36 double *j, k;
kono
parents:
diff changeset
37 g = fn1 (f, 0.5 * (x->b2 + x->b3)), h = g + 1, i = f->a1;
kono
parents:
diff changeset
38 j = f->a2, k = x->b4.d2;
kono
parents:
diff changeset
39 fn2 (x, "something");
kono
parents:
diff changeset
40 if (g <= 0)
kono
parents:
diff changeset
41 {
kono
parents:
diff changeset
42 double l = j[2] - j[1];
kono
parents:
diff changeset
43 if (l > 0.0 && l <= 0.02)
kono
parents:
diff changeset
44 k = (x->b4.d1 == 1
kono
parents:
diff changeset
45 ? ((1.0 / l) < 25 ? 25 : (1.0 / l))
kono
parents:
diff changeset
46 : fn3 ((1.0 / l) < 25 ? 25 : (1.0 / l)));
kono
parents:
diff changeset
47 }
kono
parents:
diff changeset
48 else
kono
parents:
diff changeset
49 {
kono
parents:
diff changeset
50 double m = j[h] - j[g], n = 0.0, l = 0.0;
kono
parents:
diff changeset
51 if (g > 1)
kono
parents:
diff changeset
52 n = j[g] - j[g - 1];
kono
parents:
diff changeset
53 if (h < i)
kono
parents:
diff changeset
54 l = j[h + 1] - j[h];
kono
parents:
diff changeset
55 if (n > 0.02)
kono
parents:
diff changeset
56 n = 0;
kono
parents:
diff changeset
57 if (m > 0.02)
kono
parents:
diff changeset
58 m = 0;
kono
parents:
diff changeset
59 if (l > 0.02)
kono
parents:
diff changeset
60 l = 0;
kono
parents:
diff changeset
61 if (m < n)
kono
parents:
diff changeset
62 {
kono
parents:
diff changeset
63 double o = m;
kono
parents:
diff changeset
64 m = n;
kono
parents:
diff changeset
65 n = o;
kono
parents:
diff changeset
66 }
kono
parents:
diff changeset
67 if (l < n)
kono
parents:
diff changeset
68 {
kono
parents:
diff changeset
69 double o = l;
kono
parents:
diff changeset
70 l = n;
kono
parents:
diff changeset
71 n = o;
kono
parents:
diff changeset
72 }
kono
parents:
diff changeset
73 if (l < m)
kono
parents:
diff changeset
74 {
kono
parents:
diff changeset
75 double o = l;
kono
parents:
diff changeset
76 l = m;
kono
parents:
diff changeset
77 m = o;
kono
parents:
diff changeset
78 }
kono
parents:
diff changeset
79 if (n != 0.0)
kono
parents:
diff changeset
80 k = (x->b4.d1 == 1
kono
parents:
diff changeset
81 ? ((1 / m) < 25 ? 25 : (1 / m))
kono
parents:
diff changeset
82 : fn3 ((1 / m) < 25 ? 25 : (1 / m)));
kono
parents:
diff changeset
83 else if (m != 0.0)
kono
parents:
diff changeset
84 k = (x->b4.d1 == 1
kono
parents:
diff changeset
85 ? ((2 / (m + l)) < 25 ? 25 : (2 / (m + l)))
kono
parents:
diff changeset
86 : fn3 ((2 / (m + l)) < 25 ? 25 : (2 / (m + l))));
kono
parents:
diff changeset
87 else if (l != 0.0)
kono
parents:
diff changeset
88 k = (x->b4.d1 == 1
kono
parents:
diff changeset
89 ? ((1 / l) < 25 ? 25 : (1 / l))
kono
parents:
diff changeset
90 : fn3 ((1 / l) < 25 ? 25 : (1 / l)));
kono
parents:
diff changeset
91 }
kono
parents:
diff changeset
92 fn5 (e->c2, 0.5 * (x->b2 + x->b3), (x->b4.d1 == 1 ? k : fn4 (k)));
kono
parents:
diff changeset
93 return 1;
kono
parents:
diff changeset
94 }