LWG 3035. std::allocator's constructors should be constexpr
[official-gcc.git] / gcc / testsuite / gcc.dg / vect / pr60841.c
blobfd5d2e5504443d846c88e77ffe58e2d45f9ab992
1 /* { dg-do compile } */
2 /* { dg-additional-options "-ffast-math" } */
4 /* This testcase shouldn't consume much memory or produce a 1GB vectorizer
5 dump file due to SLP tree explosion. */
7 struct S { int f1, f2, f3, f4; } a;
8 struct T { short f3, f2, f1, f4; };
9 int b, c, d, e, f, g;
10 unsigned long z;
12 void
13 foo (struct T *p, struct T *q, int x, int w)
15 for (; x; x++)
17 struct S h;
18 int i;
19 struct T j;
20 struct T *r;
21 h = a;
22 g = 0;
23 r = p + 2 * (c + 4) + 1;
24 j = *r;
25 r = p;
26 f = r->f1 - 1;
27 b = +1.0 + f * f;
28 i = (r->f2 + j.f2) / 2;
29 f = r->f3 - 1;
30 b += 1.0 - i * f * f;
31 f = r->f4 - 1;
32 if (b)
33 b += -1.0 - i * f;
34 if (b / w)
36 h.f1 += 8.0 * r->f1;
37 h.f2 += 8.0 * r->f2;
38 h.f3 += 8.0 * r->f3;
39 h.f4 += 8.0 * r->f4;
40 g = 1;
42 r++;
43 f = r->f1;
44 i = (r->f2 + j.f2) / 2;
45 f = r->f3 - 1;
46 b += 1.0 - i * f * f;
47 i = (r->f4);
48 if (b * 65535UL / w)
50 h.f1 += 10.0 * r->f1;
51 h.f2 += 10.0 * r->f2;
52 h.f3 += 10.0 * r->f3;
53 h.f4 += 10.0 * r->f4;
54 g += 10.0;
56 r++;
57 f = r->f1;
58 z = 5UL * i;
59 f = r->f2;
60 i = (r->f3 + j.f3) / 2;
61 b = -i * f * f;
62 i = (r->f4 + j.f4) / 2;
63 if (b * 65535UL / 25.0f)
65 h.f1 += 8.0 * r->f1;
66 h.f2 += 8.0 * r->f2;
67 h.f3 += 8.0 * r->f3;
68 h.f4 += 8.0 * r->f4;
69 g += 8.0;
71 r++;
72 f = r->f1 - j.f1;
73 b = 1 * 2.0 * i * f * f;
74 f = r->f2;
75 b += 4.0 * f;
76 i = r->f3 / 2;
77 f = r->f4 - 1;
78 if (b * 1)
80 h.f1 += 8.0 * r->f1;
81 h.f2 += 8.0 * r->f2;
82 h.f3 += 8.0 * r->f3;
83 h.f4 += 8.0 * r->f4;
84 g += 8.0;
86 b = 4.0 * 1 * f;
87 if (b * 65535UL / 25.0f)
89 h.f1 += 20.0 * r->f1;
90 h.f2 += 20.0 * r->f2;
91 h.f3 += 20.0 * r->f3;
92 h.f4 += 20.0 * r->f4;
93 g += 20.0;
95 b = 5 * (0.0 - i);
96 if (b < 0)
98 h.f1 += 8.0 * r->f1;
99 h.f2 += 8.0 * r->f2;
100 h.f3 += 8.0 * r->f3;
101 h.f4 += 8.0 * r->f4;
102 g += 8.0;
104 r = p + 2 * (c + 4);
105 i = (r->f1 + j.f1);
106 b = 1 * 2.0 * i * 1;
107 f = r->f2 - 1;
108 i = (r->f3 + j.f3) / 2;
109 b = 5 * (0.0 - i) * f * f;
110 i = (r->f4 + j.f4) / 2;
111 if (b * 65535UL / 25.0f)
113 h.f1 += 10.0 * r->f1;
114 h.f2 += 10.0 * r->f2;
115 h.f3 += 10.0 * r->f3;
116 h.f4 += 10.0 * r->f4;
117 g += 10.0;
119 r++;
120 f = r->f1;
121 b = 5UL * i * f;
122 i = (r->f2 + j.f2) / 2;
123 f = r->f3 - 1;
124 b = 5 * (0.0 - i) * f * f;
125 f = r->f4 - 1;
126 if (b * 65535UL / 25.0f)
128 h.f1 += 40.0 * r->f1;
129 h.f2 += 40.0 * r->f2;
130 h.f3 += 40.0 * r->f3;
131 h.f4 += 40.0 * r->f4;
132 g += 40.0;
134 r++;
135 i = (r->f1 + j.f1);
136 b = 5 * i * f;
137 f = r->f2;
138 b = 4.0 * f * f;
139 f = r->f3;
140 i = (r->f4 + j.f4) / 2;
141 b = 5 * (0.0 - i) * f * f;
142 if (b * 25.0f)
144 h.f1 += 8.0 * r->f1;
145 h.f2 += 8.0 * r->f2;
146 h.f3 += 8.0 * r->f3;
147 h.f4 += 8.0 * r->f4;
148 g += 8.0;
150 r = p + 4 * (c + 4);
151 i = r->f1 / 2;
152 b = 5 * (1.0 + i);
153 i = r->f2 + j.f2;
154 f = r->f3 - 1;
155 b = 5 * (0.0 - i) * f * f;
156 i = (r->f4 + j.f4) / 2;
157 if (b * 65535UL / 25.0f)
159 h.f1 += 5.0 * r->f1;
160 h.f2 += 5.0 * r->f2;
161 h.f3 += 5.0 * r->f3;
162 h.f4 += 5.0 * r->f4;
163 g += 5.0;
165 b = 5 * (1.0 + i);
166 if (b < 0)
168 h.f1 += 5.0 * r->f1;
169 h.f2 += 5.0 * r->f2;
170 h.f3 += 5.0 * r->f3;
171 h.f4 += 5.0 * r->f4;
172 g += 5.0;
174 q->f1 = (h.f1 + g / 2 - 1) / g;
175 q->f2 = (h.f2 + g / 2 - 1) / g;
176 q->f3 = (h.f3 + g / 2 - 1) / g;
177 q->f4 = (h.f4 + g / 2 - 1) / g;
178 p++;
179 q++;