Remove old autovect-branch by moving to "dead" directory.
[official-gcc.git] / old-autovect-branch / gcc / testsuite / gcc.c-torture / compile / 20030904-1.c
blob09fd015b115bc63e277a2c9fbd097ade37bff7db
1 struct A
3 long a1;
4 double *a2;
5 };
7 struct B
9 void *b1;
10 double b2, b3;
11 struct
13 int d1;
14 double d2;
15 } b4;
18 struct C
20 struct A *c1;
21 void *c2;
24 long fn1 (struct A *, double);
25 void fn2 (void *, const char *);
26 double fn3 (double);
27 double fn4 (double);
28 int fn5 (void *, double, double);
30 int
31 foo (struct B *x)
33 struct C *e = x->b1;
34 struct A *f = e->c1;
35 long g, h, i;
36 double *j, k;
37 g = fn1 (f, 0.5 * (x->b2 + x->b3)), h = g + 1, i = f->a1;
38 j = f->a2, k = x->b4.d2;
39 fn2 (x, "something");
40 if (g <= 0)
42 double l = j[2] - j[1];
43 if (l > 0.0 && l <= 0.02)
44 k = (x->b4.d1 == 1
45 ? ((1.0 / l) < 25 ? 25 : (1.0 / l))
46 : fn3 ((1.0 / l) < 25 ? 25 : (1.0 / l)));
48 else
50 double m = j[h] - j[g], n = 0.0, l = 0.0;
51 if (g > 1)
52 n = j[g] - j[g - 1];
53 if (h < i)
54 l = j[h + 1] - j[h];
55 if (n > 0.02)
56 n = 0;
57 if (m > 0.02)
58 m = 0;
59 if (l > 0.02)
60 l = 0;
61 if (m < n)
63 double o = m;
64 m = n;
65 n = o;
67 if (l < n)
69 double o = l;
70 l = n;
71 n = o;
73 if (l < m)
75 double o = l;
76 l = m;
77 m = o;
79 if (n != 0.0)
80 k = (x->b4.d1 == 1
81 ? ((1 / m) < 25 ? 25 : (1 / m))
82 : fn3 ((1 / m) < 25 ? 25 : (1 / m)));
83 else if (m != 0.0)
84 k = (x->b4.d1 == 1
85 ? ((2 / (m + l)) < 25 ? 25 : (2 / (m + l)))
86 : fn3 ((2 / (m + l)) < 25 ? 25 : (2 / (m + l))));
87 else if (l != 0.0)
88 k = (x->b4.d1 == 1
89 ? ((1 / l) < 25 ? 25 : (1 / l))
90 : fn3 ((1 / l) < 25 ? 25 : (1 / l)));
92 fn5 (e->c2, 0.5 * (x->b2 + x->b3), (x->b4.d1 == 1 ? k : fn4 (k)));
93 return 1;