No empty .Rs/.Re
[netbsd-mini2440.git] / gnu / dist / gcc4 / gcc / testsuite / gcc.dg / tree-ssa / vrp13.c
blob4b3afdbc8c61d44e300a195bbd6ed9bd47f10c47
1 /* { dg-do run } */
2 /* { dg-options -O2 } */
4 extern void abort (void);
6 foo_div (int i, int j)
8 int k;
10 /* [-INF, -1] / [1, +INF] should not give [-1, -1]. */
11 if (i <= -1)
12 if (j >= 1)
14 k = i / j;
15 if (k == -1)
16 abort ();
18 return k;
21 /* [-20, -10] / [2, 10] should give [-10, -1]. */
22 if (i >= -20)
23 if (i <= -10)
24 if (j >= 2)
25 if (j <= 10)
27 k = i / j;
28 if (k < -10)
29 link_error ();
30 if (k > -1)
31 link_error ();
33 return k;
36 /* [-20, -10] / [-10, -2] should give [1, 10]. */
37 if (i >= -20)
38 if (i <= -10)
39 if (j >= -10)
40 if (j <= -2)
42 k = i / j;
43 if (k < 1)
44 link_error ();
45 if (k > 10)
46 link_error ();
48 return k;
51 /* [-20, 10] / [2, 10] should give [-10, 5]. */
52 if (i >= -20)
53 if (i <= 10)
54 if (j >= 2)
55 if (j <= 10)
57 k = i / j;
58 if (k < -10)
59 link_error ();
60 if (k > 5)
61 link_error ();
63 return k;
66 /* [-20, 10] / [-10, -2] should give [-5, 10]. */
67 if (i >= -20)
68 if (i <= 10)
69 if (j >= -10)
70 if (j <= -2)
72 k = i / j;
73 if (k < -5)
74 link_error ();
75 if (k > 10)
76 link_error ();
78 return k;
81 /* [10, 20] / [2, 10] should give [1, 10]. */
82 if (i >= 10)
83 if (i <= 20)
84 if (j >= 2)
85 if (j <= 10)
87 k = i / j;
88 if (k < 1)
89 link_error ();
90 if (k > 10)
91 link_error ();
93 return k;
96 /* [10, 20] / [-10, -2] should give [-10, -1]. */
97 if (i >= 10)
98 if (i <= 20)
99 if (j >= -10)
100 if (j <= -2)
102 k = i / j;
103 if (k > -1)
104 link_error ();
105 if (k < -10)
106 link_error ();
108 return k;
111 abort ();
115 foo_mult (int i, int j)
117 int k;
119 /* [-20, -10] * [2, 10] should give [-200, -20]. */
120 if (i >= -20)
121 if (i <= -10)
122 if (j >= 2)
123 if (j <= 10)
125 k = i * j;
126 if (k < -200)
127 link_error ();
128 if (k > -20)
129 link_error ();
131 return k;
134 /* [-20, -10] * [-10, -2] should give [20, 200]. */
135 if (i >= -20)
136 if (i <= -10)
137 if (j >= -10)
138 if (j <= -2)
140 k = i * j;
141 if (k < 20)
142 link_error ();
143 if (k > 200)
144 link_error ();
146 return k;
149 /* [-20, 10] * [2, 10] should give [-200, 100]. */
150 if (i >= -20)
151 if (i <= 10)
152 if (j >= 2)
153 if (j <= 10)
155 k = i * j;
156 if (k < -200)
157 link_error ();
158 if (k > 100)
159 link_error ();
161 return k;
164 /* [-20, 10] * [-10, -2] should give [-100, 200]. */
165 if (i >= -20)
166 if (i <= 10)
167 if (j >= -10)
168 if (j <= -2)
170 k = i * j;
171 if (k < -100)
172 link_error ();
173 if (k > 200)
174 link_error ();
176 return k;
179 /* [10, 20] * [2, 10] should give [20, 200]. */
180 if (i >= 10)
181 if (i <= 20)
182 if (j >= 2)
183 if (j <= 10)
185 k = i * j;
186 if (k < 20)
187 link_error ();
188 if (k > 200)
189 link_error ();
191 return k;
194 /* [10, 20] * [-10, -2] should give [-200, -20]. */
195 if (i >= 10)
196 if (i <= 20)
197 if (j >= -10)
198 if (j <= -2)
200 k = i * j;
201 if (k < -200)
202 link_error ();
203 if (k > -20)
204 link_error ();
206 return k;
209 abort ();
213 main()
215 if (foo_div (-10, 5) != -2)
216 abort ();
218 if (foo_div (-16, 4) != -4)
219 abort ();
221 if (foo_div (-15, -5) != 3)
222 abort ();
224 if (foo_div (8, 2) != 4)
225 abort ();
227 if (foo_div (10, -2) != -5)
228 abort ();
230 if (foo_div (20, 5) != 4)
231 abort ();
233 if (foo_div (15, -3) != -5)
234 abort ();
236 if (foo_mult (-10, 5) != -50)
237 abort ();
239 if (foo_mult (-16, 4) != -64)
240 abort ();
242 if (foo_mult (-15, -5) != 75)
243 abort ();
245 if (foo_mult (8, 2) != 16)
246 abort ();
248 if (foo_mult (10, -2) != -20)
249 abort ();
251 if (foo_mult (20, 5) != 100)
252 abort ();
254 if (foo_mult (15, -3) != -45)
255 abort ();
257 return 0;