4 for OP in 'starg.s 0' 'stloc.0' 'stloc.s 0' 'stfld int32 Class::fld' pop ret
6 ./make_stack_0_test.sh "$OP"
9 for OP in add and 'box [mscorlib]System.Int32' 'brfalse branch_target' ceq cgt clt conv.i4 conv.r8 div dup 'ldfld int32 Class::fld' 'ldflda int32 Class::fld' mul not or rem shl shr sub xor
11 ./make_stack_0_pop_test.sh "$OP"
14 for OP in add and ceq cgt clt div dup mul or rem shl shr sub xor 'stfld int32 Class::fld'
16 ./make_stack_1_pop_test.sh "$OP" int32
19 # Table 2: Binary Numeric Operators
21 for OP in add div mul rem sub
23 ./make_bin_test.sh bin_num_op_32_${I} valid $OP int32 int32
24 ./make_bin_test.sh bin_num_op_33_${I} valid $OP int32 'native int'
25 ./make_bin_test.sh bin_num_op_34_${I} valid $OP int64 int64
26 ./make_bin_test.sh bin_num_op_35_${I} valid $OP 'native int' int32
27 ./make_bin_test.sh bin_num_op_36_${I} valid $OP 'native int' 'native int'
28 ./make_bin_test.sh bin_num_op_37_${I} valid $OP float64 float64
29 ./make_bin_test.sh bin_num_op_38_${I} valid $OP float32 float64
30 ./make_bin_test.sh bin_num_op_39_${I} valid $OP float64 float32
31 ./make_bin_test.sh bin_num_op_40_${I} valid $OP float32 float32
33 ./make_bin_test.sh bin_num_op_1_${I} invalid $OP int32 int64
34 ./make_bin_test.sh bin_num_op_2_${I} invalid $OP int32 float64
35 ./make_bin_test.sh bin_num_op_3_${I} invalid $OP int32 object
37 ./make_bin_test.sh bin_num_op_4_${I} invalid $OP int64 int32
38 ./make_bin_test.sh bin_num_op_5_${I} invalid $OP int64 'native int'
39 ./make_bin_test.sh bin_num_op_6_${I} invalid $OP int64 float64
40 ./make_bin_test.sh bin_num_op_7_${I} invalid $OP int64 'int64&'
41 ./make_bin_test.sh bin_num_op_8_${I} invalid $OP int64 object
43 ./make_bin_test.sh bin_num_op_9_${I} invalid $OP 'native int' int64
44 ./make_bin_test.sh bin_num_op_10_${I} invalid $OP 'native int' float64
45 ./make_bin_test.sh bin_num_op_11_${I} invalid $OP 'native int' object
47 ./make_bin_test.sh bin_num_op_12_${I} invalid $OP float64 int32
48 ./make_bin_test.sh bin_num_op_13_${I} invalid $OP float64 int64
49 ./make_bin_test.sh bin_num_op_14_${I} invalid $OP float64 'native int'
50 ./make_bin_test.sh bin_num_op_15_${I} invalid $OP float64 'float64&'
51 ./make_bin_test.sh bin_num_op_16_${I} invalid $OP float64 object
53 ./make_bin_test.sh bin_num_op_17_${I} invalid $OP 'int64&' int64
54 ./make_bin_test.sh bin_num_op_18_${I} invalid $OP 'float64&' float64
55 ./make_bin_test.sh bin_num_op_19_${I} invalid $OP 'object&' object
57 ./make_bin_test.sh bin_num_op_20_${I} invalid $OP object int32
58 ./make_bin_test.sh bin_num_op_21_${I} invalid $OP object int64
59 ./make_bin_test.sh bin_num_op_22_${I} invalid $OP object 'native int'
60 ./make_bin_test.sh bin_num_op_23_${I} invalid $OP object float64
61 ./make_bin_test.sh bin_num_op_24_${I} invalid $OP object 'object&'
62 ./make_bin_test.sh bin_num_op_25_${I} invalid $OP object object
67 for OP in div mul rem sub
69 ./make_bin_test.sh bin_num_op_26_${I} invalid $OP int32 'int32&'
70 ./make_bin_test.sh bin_num_op_27_${I} invalid $OP 'native int' 'native int&'
76 ./make_bin_test.sh bin_num_op_26_${I} unverifiable $OP int32 'int32&'
77 ./make_bin_test.sh bin_num_op_27_${I} unverifiable $OP 'native int' 'native int&'
84 ./make_bin_test.sh bin_num_op_28_${I} invalid $OP 'int32&' int32
85 ./make_bin_test.sh bin_num_op_29_${I} invalid $OP 'native int&' 'native int'
91 ./make_bin_test.sh bin_num_op_28_${I} unverifiable $OP 'int32&' int32
92 ./make_bin_test.sh bin_num_op_29_${I} unverifiable $OP 'native int&' 'native int'
97 for OP in div mul rem add
99 ./make_bin_test.sh bin_num_op_30_${I} invalid $OP 'int32&' 'int32&'
105 ./make_bin_test.sh bin_num_op_30_${I} unverifiable $OP 'int32&' 'int32&'
109 # Table 4: Binary Comparison or Branch Operations
111 for OP in ceq cgt clt
113 ./make_bin_test.sh bin_comp_op_1_${I} invalid $OP int32 int64
114 ./make_bin_test.sh bin_comp_op_2_${I} invalid $OP int32 float64
115 ./make_bin_test.sh bin_comp_op_3_${I} invalid $OP int32 'int32&'
116 ./make_bin_test.sh bin_comp_op_4_${I} invalid $OP int32 object
118 ./make_bin_test.sh bin_comp_op_5_${I} invalid $OP int64 int32
119 ./make_bin_test.sh bin_comp_op_6_${I} invalid $OP int64 'native int'
120 ./make_bin_test.sh bin_comp_op_7_${I} invalid $OP int64 float64
121 ./make_bin_test.sh bin_comp_op_8_${I} invalid $OP int64 'int64&'
122 ./make_bin_test.sh bin_comp_op_9_${I} invalid $OP int64 object
124 ./make_bin_test.sh bin_comp_op_10_${I} invalid $OP 'native int' int64
125 ./make_bin_test.sh bin_comp_op_11_${I} invalid $OP 'native int' float64
126 ./make_bin_test.sh bin_comp_op_12_${I} invalid $OP 'native int' object
128 ./make_bin_test.sh bin_comp_op_13_${I} invalid $OP float64 int32
129 ./make_bin_test.sh bin_comp_op_14_${I} invalid $OP float64 int64
130 ./make_bin_test.sh bin_comp_op_15_${I} invalid $OP float64 'native int'
131 ./make_bin_test.sh bin_comp_op_16_${I} invalid $OP float64 'float64&'
132 ./make_bin_test.sh bin_comp_op_17_${I} invalid $OP float64 object
134 ./make_bin_test.sh bin_comp_op_18_${I} invalid $OP 'int32&' int32
135 ./make_bin_test.sh bin_comp_op_19_${I} invalid $OP 'int64&' int64
136 ./make_bin_test.sh bin_comp_op_20_${I} invalid $OP 'float64&' float64
137 ./make_bin_test.sh bin_comp_op_21_${I} invalid $OP 'object&' object
139 ./make_bin_test.sh bin_comp_op_22_${I} invalid $OP object int32
140 ./make_bin_test.sh bin_comp_op_23_${I} invalid $OP object int64
141 ./make_bin_test.sh bin_comp_op_24_${I} invalid $OP object 'native int'
142 ./make_bin_test.sh bin_comp_op_25_${I} invalid $OP object float64
143 ./make_bin_test.sh bin_comp_op_26_${I} invalid $OP object 'object&'
150 ./make_bin_test.sh bin_comp_op_27_${I} invalid $OP 'native int' 'native int&'
151 ./make_bin_test.sh bin_comp_op_28_${I} invalid $OP 'native int&' 'native int'
152 ./make_bin_test.sh bin_comp_op_29_${I} invalid $OP object object
158 ./make_bin_test.sh bin_comp_op_27_${I} unverifiable $OP 'native int' 'native int&'
159 ./make_bin_test.sh bin_comp_op_28_${I} unverifiable $OP 'native int&' 'native int'
163 # Table 5: Integer Operations
167 ./make_bin_test.sh bin_int_op_1_${I} invalid "$OP" int32 int64
168 ./make_bin_test.sh bin_int_op_2_${I} invalid "$OP" int32 float64
169 ./make_bin_test.sh bin_int_op_3_${I} invalid "$OP" int32 'int32&'
170 ./make_bin_test.sh bin_int_op_4_${I} invalid "$OP" int32 object
172 ./make_bin_test.sh bin_int_op_5_${I} invalid "$OP" int64 int32
173 ./make_bin_test.sh bin_int_op_6_${I} invalid "$OP" int64 'native int'
174 ./make_bin_test.sh bin_int_op_7_${I} invalid "$OP" int64 float64
175 ./make_bin_test.sh bin_int_op_8_${I} invalid "$OP" int64 'int64&'
176 ./make_bin_test.sh bin_int_op_9_${I} invalid "$OP" int64 object
178 ./make_bin_test.sh bin_int_op_10_${I} invalid "$OP" 'native int' int64
179 ./make_bin_test.sh bin_int_op_11_${I} invalid "$OP" 'native int' float64
180 ./make_bin_test.sh bin_int_op_12_${I} invalid "$OP" 'native int' 'native int&'
181 ./make_bin_test.sh bin_int_op_13_${I} invalid "$OP" 'native int' object
183 ./make_bin_test.sh bin_int_op_14_${I} invalid "$OP" float64 int32
184 ./make_bin_test.sh bin_int_op_15_${I} invalid "$OP" float64 int64
185 ./make_bin_test.sh bin_int_op_16_${I} invalid "$OP" float64 'native int'
186 ./make_bin_test.sh bin_int_op_17_${I} invalid "$OP" float64 float64
187 ./make_bin_test.sh bin_int_op_18_${I} invalid "$OP" float64 'int32&'
188 ./make_bin_test.sh bin_int_op_19_${I} invalid "$OP" float64 object
190 ./make_bin_test.sh bin_int_op_20_${I} invalid "$OP" 'int32&' int32
191 ./make_bin_test.sh bin_int_op_21_${I} invalid "$OP" 'int64&' int64
192 ./make_bin_test.sh bin_int_op_22_${I} invalid "$OP" 'native int&' 'native int'
193 ./make_bin_test.sh bin_int_op_23_${I} invalid "$OP" 'float64&' float64
194 ./make_bin_test.sh bin_int_op_24_${I} invalid "$OP" 'int32&' 'int32&'
195 ./make_bin_test.sh bin_int_op_25_${I} invalid "$OP" 'float64&' object
197 ./make_bin_test.sh bin_int_op_26_${I} invalid "$OP" object int32
198 ./make_bin_test.sh bin_int_op_27_${I} invalid "$OP" object int64
199 ./make_bin_test.sh bin_int_op_28_${I} invalid "$OP" object 'native int'
200 ./make_bin_test.sh bin_int_op_29_${I} invalid "$OP" object float64
201 ./make_bin_test.sh bin_int_op_30_${I} invalid "$OP" object 'int32&'
202 ./make_bin_test.sh bin_int_op_31_${I} invalid "$OP" object object
206 for OP in "not\n\tpop"
208 ./make_unary_test.sh not_1 invalid "$OP" float64
209 ./make_unary_test.sh not_2 invalid "$OP" 'int32&'
210 ./make_unary_test.sh not_3 invalid "$OP" object
213 # Table 6: Shift Operators
217 ./make_bin_test.sh shift_op_1_${I} invalid $OP int32 int64
218 ./make_bin_test.sh shift_op_2_${I} invalid $OP int32 float64
219 ./make_bin_test.sh shift_op_3_${I} invalid $OP int32 'int32&'
220 ./make_bin_test.sh shift_op_4_${I} invalid $OP int32 object
222 ./make_bin_test.sh shift_op_5_${I} invalid $OP int64 int64
223 ./make_bin_test.sh shift_op_6_${I} invalid $OP int64 float64
224 ./make_bin_test.sh shift_op_7_${I} invalid $OP int64 'int32&'
225 ./make_bin_test.sh shift_op_8_${I} invalid $OP int64 object
227 ./make_bin_test.sh shift_op_9_${I} invalid $OP 'native int' int64
228 ./make_bin_test.sh shift_op_10_${I} invalid $OP 'native int' float64
229 ./make_bin_test.sh shift_op_11_${I} invalid $OP 'native int' 'native int&'
230 ./make_bin_test.sh shift_op_12_${I} invalid $OP 'native int' object
232 ./make_bin_test.sh shift_op_13_${I} invalid $OP float64 int32
233 ./make_bin_test.sh shift_op_14_${I} invalid $OP float64 int64
234 ./make_bin_test.sh shift_op_15_${I} invalid $OP float64 'native int'
235 ./make_bin_test.sh shift_op_16_${I} invalid $OP float64 float64
236 ./make_bin_test.sh shift_op_17_${I} invalid $OP float64 'int32&'
237 ./make_bin_test.sh shift_op_18_${I} invalid $OP float64 object
239 ./make_bin_test.sh shift_op_19_${I} invalid $OP 'int32&' int32
240 ./make_bin_test.sh shift_op_20_${I} invalid $OP 'int64&' int64
241 ./make_bin_test.sh shift_op_21_${I} invalid $OP 'native int&' 'native int'
242 ./make_bin_test.sh shift_op_22_${I} invalid $OP 'float64&' float64
243 ./make_bin_test.sh shift_op_23_${I} invalid $OP 'int32&' 'int32&'
244 ./make_bin_test.sh shift_op_24_${I} invalid $OP 'float64&' object
246 ./make_bin_test.sh shift_op_25_${I} invalid $OP object int32
247 ./make_bin_test.sh shift_op_26_${I} invalid $OP object int64
248 ./make_bin_test.sh shift_op_27_${I} invalid $OP object 'native int'
249 ./make_bin_test.sh shift_op_28_${I} invalid $OP object float64
250 ./make_bin_test.sh shift_op_29_${I} invalid $OP object 'int32&'
251 ./make_bin_test.sh shift_op_30_${I} invalid $OP object object
255 # Table 8: Conversion Operations
257 for OP in "conv.i4\n\tpop" "conv.r8\n\tpop"
259 ./make_unary_test.sh conv_op_1_${I} invalid $OP 'int32&'
260 ./make_unary_test.sh conv_op_2_${I} invalid $OP object
264 #local and argument store with invalid values lead to unverifiable code
266 for OP in stloc.0 "stloc.s 0" "starg 0" "starg.s 0"
268 ./make_store_test.sh coercion_1_${I} unverifiable "$OP" int8 int64
269 ./make_store_test.sh coercion_2_${I} unverifiable "$OP" int8 float64
270 ./make_store_test.sh coercion_3_${I} unverifiable "$OP" int8 'int8&'
271 ./make_store_test.sh coercion_4_${I} unverifiable "$OP" int8 object
273 ./make_store_test.sh coercion_5_${I} unverifiable "$OP" 'unsigned int8' int64
274 ./make_store_test.sh coercion_6_${I} unverifiable "$OP" 'unsigned int8' float64
275 ./make_store_test.sh coercion_7_${I} unverifiable "$OP" 'unsigned int8' 'unsigned int8&'
276 ./make_store_test.sh coercion_8_${I} unverifiable "$OP" 'unsigned int8' object
278 ./make_store_test.sh coercion_9_${I} unverifiable "$OP" bool int64
279 ./make_store_test.sh coercion_10_${I} unverifiable "$OP" bool float64
280 ./make_store_test.sh coercion_11_${I} unverifiable "$OP" bool 'bool&'
281 ./make_store_test.sh coercion_12_${I} unverifiable "$OP" bool object
283 ./make_store_test.sh coercion_13_${I} unverifiable "$OP" int16 int64
284 ./make_store_test.sh coercion_14_${I} unverifiable "$OP" int16 float64
285 ./make_store_test.sh coercion_15_${I} unverifiable "$OP" int16 'int16&'
286 ./make_store_test.sh coercion_16_${I} unverifiable "$OP" int16 object
288 ./make_store_test.sh coercion_17_${I} unverifiable "$OP" 'unsigned int16' int64
289 ./make_store_test.sh coercion_18_${I} unverifiable "$OP" 'unsigned int16' float64
290 ./make_store_test.sh coercion_19_${I} unverifiable "$OP" 'unsigned int16' 'unsigned int16&'
291 ./make_store_test.sh coercion_20_${I} unverifiable "$OP" 'unsigned int16' object
293 ./make_store_test.sh coercion_21_${I} unverifiable "$OP" char int64
294 ./make_store_test.sh coercion_22_${I} unverifiable "$OP" char float64
295 ./make_store_test.sh coercion_23_${I} unverifiable "$OP" char 'char&'
296 ./make_store_test.sh coercion_24_${I} unverifiable "$OP" char object
298 ./make_store_test.sh coercion_25_${I} unverifiable "$OP" int32 int64
299 ./make_store_test.sh coercion_26_${I} unverifiable "$OP" int32 float64
300 ./make_store_test.sh coercion_27_${I} unverifiable "$OP" int32 'int32&'
301 ./make_store_test.sh coercion_28_${I} unverifiable "$OP" int32 object
303 ./make_store_test.sh coercion_29_${I} unverifiable "$OP" 'unsigned int32' int64
304 ./make_store_test.sh coercion_30_${I} unverifiable "$OP" 'unsigned int32' float64
305 ./make_store_test.sh coercion_31_${I} unverifiable "$OP" 'unsigned int32' 'unsigned int32&'
306 ./make_store_test.sh coercion_32_${I} unverifiable "$OP" 'unsigned int32' object
308 ./make_store_test.sh coercion_33_${I} unverifiable "$OP" int64 int32
309 ./make_store_test.sh coercion_34_${I} unverifiable "$OP" int64 'native int'
310 ./make_store_test.sh coercion_35_${I} unverifiable "$OP" int64 float64
311 ./make_store_test.sh coercion_36_${I} unverifiable "$OP" int64 'int64&'
312 ./make_store_test.sh coercion_37_${I} unverifiable "$OP" int64 object
314 ./make_store_test.sh coercion_38_${I} unverifiable "$OP" 'unsigned int64' int32
315 ./make_store_test.sh coercion_39_${I} unverifiable "$OP" 'unsigned int64' 'native int'
316 ./make_store_test.sh coercion_40_${I} unverifiable "$OP" 'unsigned int64' float64
317 ./make_store_test.sh coercion_41_${I} unverifiable "$OP" 'unsigned int64' 'unsigned int64&'
318 ./make_store_test.sh coercion_42_${I} unverifiable "$OP" 'unsigned int64' object
320 ./make_store_test.sh coercion_43_${I} unverifiable "$OP" 'native int' int64
321 ./make_store_test.sh coercion_44_${I} unverifiable "$OP" 'native int' float64
322 ./make_store_test.sh coercion_45_${I} unverifiable "$OP" 'native int' 'native int&'
323 ./make_store_test.sh coercion_46_${I} unverifiable "$OP" 'native int' object
325 ./make_store_test.sh coercion_47_${I} unverifiable "$OP" 'native unsigned int' int64
326 ./make_store_test.sh coercion_48_${I} unverifiable "$OP" 'native unsigned int' float64
327 ./make_store_test.sh coercion_49_${I} unverifiable "$OP" 'native unsigned int' 'native unsigned int&'
328 ./make_store_test.sh coercion_50_${I} unverifiable "$OP" 'native unsigned int' object
330 ./make_store_test.sh coercion_51_${I} unverifiable "$OP" float32 int32
331 ./make_store_test.sh coercion_52_${I} unverifiable "$OP" float32 'native int'
332 ./make_store_test.sh coercion_53_${I} unverifiable "$OP" float32 int64
333 ./make_store_test.sh coercion_54_${I} unverifiable "$OP" float32 'float32&'
334 ./make_store_test.sh coercion_55_${I} unverifiable "$OP" float32 object
336 ./make_store_test.sh coercion_56_${I} unverifiable "$OP" float64 int32
337 ./make_store_test.sh coercion_57_${I} unverifiable "$OP" float64 'native int'
338 ./make_store_test.sh coercion_58_${I} unverifiable "$OP" float64 int64
339 ./make_store_test.sh coercion_59_${I} unverifiable "$OP" float64 'float64&'
340 ./make_store_test.sh coercion_60_${I} unverifiable "$OP" float64 object
342 ./make_store_test.sh coercion_61_${I} unverifiable "$OP" object int32
343 ./make_store_test.sh coercion_62_${I} unverifiable "$OP" object 'native int'
344 ./make_store_test.sh coercion_63_${I} unverifiable "$OP" object int64
345 ./make_store_test.sh coercion_64_${I} unverifiable "$OP" object float64
346 ./make_store_test.sh coercion_65_${I} unverifiable "$OP" object 'object&'
348 ./make_store_test.sh coercion_66_${I} unverifiable "$OP" 'class ValueType' int32
349 ./make_store_test.sh coercion_67_${I} unverifiable "$OP" 'class ValueType' 'native int'
350 ./make_store_test.sh coercion_68_${I} unverifiable "$OP" 'class ValueType' int64
351 ./make_store_test.sh coercion_69_${I} unverifiable "$OP" 'class ValueType' float64
352 ./make_store_test.sh coercion_70_${I} unverifiable "$OP" 'class ValueType' 'class ValueType&'
353 ./make_store_test.sh coercion_71_${I} unverifiable "$OP" 'class ValueType' object
355 ./make_store_test.sh coercion_72_${I} unverifiable "$OP" 'int32&' int32
356 ./make_store_test.sh coercion_73_${I} unverifiable "$OP" 'int32&' 'native int'
357 ./make_store_test.sh coercion_74_${I} unverifiable "$OP" 'int32&' int64
358 ./make_store_test.sh coercion_75_${I} unverifiable "$OP" 'int32&' float64
359 ./make_store_test.sh coercion_76_${I} unverifiable "$OP" 'int32&' object
361 ./make_store_test.sh coercion_77_${I} unverifiable "$OP" typedref int32
362 ./make_store_test.sh coercion_78_${I} unverifiable "$OP" typedref 'native int'
363 ./make_store_test.sh coercion_89_${I} unverifiable "$OP" typedref int64
364 ./make_store_test.sh coercion_80_${I} unverifiable "$OP" typedref float64
365 ./make_store_test.sh coercion_81_${I} unverifiable "$OP" typedref 'typedref&'
366 ./make_store_test.sh coercion_82_${I} unverifiable "$OP" typedref object
370 #Field store parameter compatibility leads to invalid code
371 #Calling method with diferent verification types on stack lead to invalid code
373 for OP in "stfld TYPE1 Class::fld" "stsfld TYPE1 Class::sfld\n\tpop" "call void Class::Method(TYPE1)"
375 ./make_obj_store_test.sh obj_coercion_1_${I} invalid "$OP" int8 int64
376 ./make_obj_store_test.sh obj_coercion_2_${I} invalid "$OP" int8 float64
377 ./make_obj_store_test.sh obj_coercion_3_${I} invalid "$OP" int8 'int8&'
378 ./make_obj_store_test.sh obj_coercion_4_${I} invalid "$OP" int8 object
380 ./make_obj_store_test.sh obj_coercion_5_${I} invalid "$OP" 'unsigned int8' int64
381 ./make_obj_store_test.sh obj_coercion_6_${I} invalid "$OP" 'unsigned int8' float64
382 ./make_obj_store_test.sh obj_coercion_7_${I} invalid "$OP" 'unsigned int8' 'unsigned int8&'
383 ./make_obj_store_test.sh obj_coercion_8_${I} invalid "$OP" 'unsigned int8' object
385 ./make_obj_store_test.sh obj_coercion_9_${I} invalid "$OP" bool int64
386 ./make_obj_store_test.sh obj_coercion_10_${I} invalid "$OP" bool float64
387 ./make_obj_store_test.sh obj_coercion_11_${I} invalid "$OP" bool 'bool&'
388 ./make_obj_store_test.sh obj_coercion_12_${I} invalid "$OP" bool object
390 ./make_obj_store_test.sh obj_coercion_13_${I} invalid "$OP" int16 int64
391 ./make_obj_store_test.sh obj_coercion_14_${I} invalid "$OP" int16 float64
392 ./make_obj_store_test.sh obj_coercion_15_${I} invalid "$OP" int16 'int16&'
393 ./make_obj_store_test.sh obj_coercion_16_${I} invalid "$OP" int16 object
395 ./make_obj_store_test.sh obj_coercion_17_${I} invalid "$OP" 'unsigned int16' int64
396 ./make_obj_store_test.sh obj_coercion_18_${I} invalid "$OP" 'unsigned int16' float64
397 ./make_obj_store_test.sh obj_coercion_19_${I} invalid "$OP" 'unsigned int16' 'unsigned int16&'
398 ./make_obj_store_test.sh obj_coercion_20_${I} invalid "$OP" 'unsigned int16' object
400 ./make_obj_store_test.sh obj_coercion_21_${I} invalid "$OP" char int64
401 ./make_obj_store_test.sh obj_coercion_22_${I} invalid "$OP" char float64
402 ./make_obj_store_test.sh obj_coercion_23_${I} invalid "$OP" char 'char&'
403 ./make_obj_store_test.sh obj_coercion_24_${I} invalid "$OP" char object
405 ./make_obj_store_test.sh obj_coercion_25_${I} invalid "$OP" int32 int64
406 ./make_obj_store_test.sh obj_coercion_26_${I} invalid "$OP" int32 float64
407 ./make_obj_store_test.sh obj_coercion_27_${I} invalid "$OP" int32 'int32&'
408 ./make_obj_store_test.sh obj_coercion_28_${I} invalid "$OP" int32 object
410 ./make_obj_store_test.sh obj_coercion_29_${I} invalid "$OP" 'unsigned int32' int64
411 ./make_obj_store_test.sh obj_coercion_30_${I} invalid "$OP" 'unsigned int32' float64
412 ./make_obj_store_test.sh obj_coercion_31_${I} invalid "$OP" 'unsigned int32' 'unsigned int32&'
413 ./make_obj_store_test.sh obj_coercion_32_${I} invalid "$OP" 'unsigned int32' object
415 ./make_obj_store_test.sh obj_coercion_33_${I} invalid "$OP" int64 int32
416 ./make_obj_store_test.sh obj_coercion_34_${I} invalid "$OP" int64 'native int'
417 ./make_obj_store_test.sh obj_coercion_35_${I} invalid "$OP" int64 float64
418 ./make_obj_store_test.sh obj_coercion_36_${I} invalid "$OP" int64 'int64&'
419 ./make_obj_store_test.sh obj_coercion_37_${I} invalid "$OP" int64 object
421 ./make_obj_store_test.sh obj_coercion_38_${I} invalid "$OP" 'unsigned int64' int32
422 ./make_obj_store_test.sh obj_coercion_39_${I} invalid "$OP" 'unsigned int64' 'native int'
423 ./make_obj_store_test.sh obj_coercion_40_${I} invalid "$OP" 'unsigned int64' float64
424 ./make_obj_store_test.sh obj_coercion_41_${I} invalid "$OP" 'unsigned int64' 'unsigned int64&'
425 ./make_obj_store_test.sh obj_coercion_42_${I} invalid "$OP" 'unsigned int64' object
427 ./make_obj_store_test.sh obj_coercion_43_${I} invalid "$OP" 'native int' int64
428 ./make_obj_store_test.sh obj_coercion_44_${I} invalid "$OP" 'native int' float64
429 ./make_obj_store_test.sh obj_coercion_45_${I} invalid "$OP" 'native int' 'native int&'
430 ./make_obj_store_test.sh obj_coercion_46_${I} invalid "$OP" 'native int' object
432 ./make_obj_store_test.sh obj_coercion_47_${I} invalid "$OP" 'native unsigned int' int64
433 ./make_obj_store_test.sh obj_coercion_48_${I} invalid "$OP" 'native unsigned int' float64
434 ./make_obj_store_test.sh obj_coercion_49_${I} invalid "$OP" 'native unsigned int' 'native unsigned int&'
435 ./make_obj_store_test.sh obj_coercion_50_${I} invalid "$OP" 'native unsigned int' object
437 ./make_obj_store_test.sh obj_coercion_51_${I} invalid "$OP" float32 int32
438 ./make_obj_store_test.sh obj_coercion_52_${I} invalid "$OP" float32 'native int'
439 ./make_obj_store_test.sh obj_coercion_53_${I} invalid "$OP" float32 int64
440 ./make_obj_store_test.sh obj_coercion_54_${I} invalid "$OP" float32 'float32&'
441 ./make_obj_store_test.sh obj_coercion_55_${I} invalid "$OP" float32 object
443 ./make_obj_store_test.sh obj_coercion_56_${I} invalid "$OP" float64 int32
444 ./make_obj_store_test.sh obj_coercion_57_${I} invalid "$OP" float64 'native int'
445 ./make_obj_store_test.sh obj_coercion_58_${I} invalid "$OP" float64 int64
446 ./make_obj_store_test.sh obj_coercion_59_${I} invalid "$OP" float64 'float64&'
447 ./make_obj_store_test.sh obj_coercion_60_${I} invalid "$OP" float64 object
449 ./make_obj_store_test.sh obj_coercion_61_${I} invalid "$OP" object int32
450 ./make_obj_store_test.sh obj_coercion_62_${I} invalid "$OP" object 'native int'
451 ./make_obj_store_test.sh obj_coercion_63_${I} invalid "$OP" object int64
452 ./make_obj_store_test.sh obj_coercion_64_${I} invalid "$OP" object float64
453 ./make_obj_store_test.sh obj_coercion_65_${I} invalid "$OP" object 'object&'
455 ./make_obj_store_test.sh obj_coercion_66_${I} invalid "$OP" 'class ValueType' int32
456 ./make_obj_store_test.sh obj_coercion_67_${I} invalid "$OP" 'class ValueType' 'native int'
457 ./make_obj_store_test.sh obj_coercion_68_${I} invalid "$OP" 'class ValueType' int64
458 ./make_obj_store_test.sh obj_coercion_69_${I} invalid "$OP" 'class ValueType' float64
459 ./make_obj_store_test.sh obj_coercion_70_${I} invalid "$OP" 'class ValueType' 'class ValueType&'
460 ./make_obj_store_test.sh obj_coercion_71_${I} invalid "$OP" 'class ValueType' object
463 #These tests don't test store error since one cannot have an 'int32&' field
464 #They should exist in the structural tests session
465 #./make_obj_store_test.sh obj_coercion_72_${I} invalid "$OP" 'int32&' int32
466 #./make_obj_store_test.sh obj_coercion_73_${I} invalid "$OP" 'int32&' 'native int'
467 #./make_obj_store_test.sh obj_coercion_74_${I} invalid "$OP" 'int32&' int64
468 #./make_obj_store_test.sh obj_coercion_75_${I} invalid "$OP" 'int32&' float64
469 #./make_obj_store_test.sh obj_coercion_76_${I} invalid "$OP" 'int32&' object
471 ./make_obj_store_test.sh obj_coercion_77_${I} invalid "$OP" typedref int32
472 ./make_obj_store_test.sh obj_coercion_78_${I} invalid "$OP" typedref 'native int'
473 ./make_obj_store_test.sh obj_coercion_79_${I} invalid "$OP" typedref int64
474 ./make_obj_store_test.sh obj_coercion_80_${I} invalid "$OP" typedref float64
475 ./make_obj_store_test.sh obj_coercion_81_${I} invalid "$OP" typedref 'typedref&'
476 ./make_obj_store_test.sh obj_coercion_82_${I} invalid "$OP" typedref object
480 # 1.8.1.2.3 Verification type compatibility (Assignment compatibility)
482 for OP in stloc.0 "stloc.s 0" "starg.s 0"
484 # ClassB not subtype of ClassA.
485 ./make_store_test.sh assign_compat_1_${I} unverifiable "$OP" 'class ClassA' 'class ClassB'
487 # ClassA not interface type.
488 # FIXME: what was the purpoise of this test? on it's current for it is valid and not unverifiable
489 ./make_store_test.sh assign_compat_3_${I} valid "$OP" object 'class ClassA'
491 # Implementation of InterfaceB does not require the implementation of InterfaceA
492 ./make_store_test.sh assign_compat_4_${I} unverifiable "$OP" 'class InterfaceA' 'class InterfaceB'
495 ./make_store_test.sh assign_compat_5_${I} unverifiable "$OP" 'string []' 'string[,]'
498 ./make_store_test.sh assign_compat_6_${I} unverifiable "$OP" 'string [,]' 'string[]'
500 # Arrays with different rank.
501 ./make_store_test.sh assign_compat_7_${I} unverifiable "$OP" 'string [,]' 'string[,,]'
503 # Method pointers with different return types.
504 ./make_store_test.sh assign_compat_8_${I} unverifiable "$OP" 'method int32 *(int32)' 'method float32 *(int32)'
506 # Method pointers with different parameters.
507 ./make_store_test.sh assign_compat_9_${I} unverifiable "$OP" 'method int32 *(float64)' 'method int32 *(int32)'
509 # Method pointers with different calling conventions.
510 ./make_store_test.sh assign_compat_10_${I} unverifiable "$OP" 'method vararg int32 *(int32)' 'method int32 *(int32)'
514 for OP in "stfld TYPE1 Class::fld" "stsfld TYPE1 Class::sfld\n\tpop" "call void Class::Method(TYPE1)"
516 # ClassB not subtype of ClassA.
517 ./make_obj_store_test.sh assign_compat_1_${I} invalid "$OP" 'class ClassA' 'class ClassB'
519 # ClassA not interface type.
520 #FIXME: this test is valid, you can store type ClassA in a object field
521 ./make_obj_store_test.sh assign_compat_3_${I} valid "$OP" object 'class ClassA'
523 # Implementation of InterfaceB does not require the implementation of InterfaceA
524 ./make_obj_store_test.sh assign_compat_4_${I} invalid "$OP" 'class InterfaceA' 'class InterfaceB'
527 ./make_obj_store_test.sh assign_compat_5_${I} invalid "$OP" 'string []' 'string[,]'
530 ./make_obj_store_test.sh assign_compat_6_${I} invalid "$OP" 'string [,]' 'string[]'
532 # Arrays with different rank.
533 ./make_obj_store_test.sh assign_compat_7_${I} invalid "$OP" 'string [,]' 'string[,,]'
535 # Method pointers with different return types.
536 ./make_obj_store_test.sh assign_compat_8_${I} invalid "$OP" 'method int32 *(int32)' 'method float32 *(int32)'
538 # Method pointers with different parameters.
539 ./make_obj_store_test.sh assign_compat_9_${I} invalid "$OP" 'method int32 *(float64)' 'method int32 *(int32)'
541 # Method pointers with different calling conventions.
542 ./make_obj_store_test.sh assign_compat_10_${I} invalid "$OP" 'method vararg int32 *(int32)' 'method int32 *(int32)'
546 # 1.8.1.3 Merging stack states
548 for TYPE1 in int32 int64 'native int' float64 'valuetype ValueType' 'class Class' 'int8&' 'int16&' 'int32&' 'int64&' 'native int&' 'float32&' 'float64&' 'valuetype ValueType&' 'class Class&' 'method int32 *(int32)' 'method float32 *(int32)' 'method int32 *(float64)' 'method vararg int32 *(int32)'
550 for TYPE2 in int32 int64 'native int' float64 'valuetype ValueType' 'class Class' 'int8&' 'int16&' 'int32&' 'int64&' 'native int&' 'float32&' 'float64&' 'valuetype ValueType&' 'class Class&' 'method int32 *(int32)' 'method float32 *(int32)' 'method int32 *(float64)' 'method vararg int32 *(int32)'
552 ZZ=`echo $TYPE1 | grep "*";`
554 ZZ=`echo $TYPE2 | grep "*";`
557 if (($T1_PTR == 0 || $T2_PTR == 0)); then
558 ./make_stack_merge_test.sh stack_merge_${I} unverifiable "$TYPE1" "$TYPE2"
559 elif [ "$TYPE1" == "$TYPE2" ]; then
560 ./make_stack_merge_test.sh stack_merge_${I} valid "$TYPE1" "$TYPE2"
561 elif [ "$TYPE1" == "int32" ] && [ "$TYPE2" == "native int" ]; then
562 ./make_stack_merge_test.sh stack_merge_${I} valid "$TYPE1" "$TYPE2"
563 elif [ "$TYPE1" == "native int" ] && [ "$TYPE2" == "int32" ]; then
564 ./make_stack_merge_test.sh stack_merge_${I} valid "$TYPE1" "$TYPE2"
566 ./make_stack_merge_test.sh stack_merge_${I} unverifiable "$TYPE1" "$TYPE2"
572 # Unverifiable array stack merges
574 # These are verifiable, the merged type is 'object' or 'Array'
575 #for TYPE1 in 'string []' 'string [,]' 'string [,,]'
577 # for TYPE2 in 'string []' 'string [,]' 'string [,,]'
579 # if [ "$TYPE1" != "$TYPE2" ]; then
580 # ./make_stack_merge_test.sh stack_merge_${I} unverifiable "$TYPE1" "$TYPE2"
586 # Exception block branch tests (see 3.15)
588 for OP in br "ldc.i4.0\n\tbrfalse"
590 ./make_exception_branch_test.sh in_try_${I} "$OP branch_target1"
591 ./make_exception_branch_test.sh in_catch_${I} "$OP branch_target2"
592 ./make_exception_branch_test.sh in_finally_${I} "$OP branch_target3"
593 ./make_exception_branch_test.sh in_filter_${I} "$OP branch_target4"
594 ./make_exception_branch_test.sh out_try_${I} "" "$OP branch_target5"
595 ./make_exception_branch_test.sh out_catch_${I} "" "" "$OP branch_target5"
596 ./make_exception_branch_test.sh out_finally_${I} "" "" "" "$OP branch_target5"
597 ./make_exception_branch_test.sh out_filter_${I} "" "" "" "" "$OP branch_target5"
601 ./make_exception_branch_test.sh ret_out_try "" "ldc.i4.0\n\tret"
602 ./make_exception_branch_test.sh ret_out_catch "" "" "ldc.i4.0\n\tret"
603 ./make_exception_branch_test.sh ret_out_finally "" "" "" "ldc.i4.0\n\tret"
604 ./make_exception_branch_test.sh ret_out_filter "" "" "" "" "ldc.i4.0\n\tret"
606 # Unary branch op type tests (see 3.17)
610 ./make_unary_test.sh un_branch_op invalid "$OP branch_target" float64
613 # Ldloc.0 and Ldarg tests (see 3.38)
616 for OP in "ldarg.s 0" "ldarg.0" "ldarga.s 0" "ldloc.s 1" "ldloca.s 1"
618 ./make_unary_test.sh ld_no_slot_${I} invalid "pop\n\t$OP\n\tpop" int32
622 # Starg and Stloc tests (see 3.61)
625 for OP in "starg.s 0" "stloc.s 1"
627 ./make_unary_test.sh st_no_slot_${I} invalid "$OP" int32
631 # Ldfld and Ldflda tests (see 4.10)
633 for OP in ldfld ldflda
635 ./make_unary_test.sh ${OP}_no_fld invalid "$OP int32 Class::invalid\n\tpop" "class Class"
636 ./make_unary_test.sh ${OP}_bad_obj invalid "$OP int32 Class::valid\n\tpop" object
637 ./make_unary_test.sh ${OP}_obj_int32 invalid "$OP int32 Class::valid\n\tpop" int32
638 ./make_unary_test.sh ${OP}_obj_int64 invalid "$OP int32 Class::valid\n\tpop" int64
639 ./make_unary_test.sh ${OP}_obj_float64 invalid "$OP int32 Class::valid\n\tpop" float64
640 ./make_unary_test.sh ${OP}_obj_native_int unverifiable "$OP int32 Class::valid\n\tpop" 'native int'
641 ./make_unary_test.sh ${OP}_obj_native_int unverifiable "$OP object Overlapped::objVal\n\tpop" "class Overlapped"
642 ./make_unary_test.sh ${OP}_obj_native_int unverifiable "$OP int32 Overlapped::publicIntVal\n\tpop" "class Overlapped"
645 # Stfld tests (see 4.28)
647 ./make_unary_test.sh stfld_no_fld invalid "ldc.i4.0\n\tstfld int32 Class::invalid" "class Class"
648 ./make_unary_test.sh stfld_bad_obj invalid "ldc.i4.0\n\tstfld int32 Class::valid" object
649 ./make_unary_test.sh stfld_obj_int32 invalid "ldc.i4.0\n\tstfld int32 Class::valid" int32
650 ./make_unary_test.sh stfld_obj_int64 invalid "ldc.i4.0\n\tstfld int32 Class::valid" int64
651 ./make_unary_test.sh stfld_obj_float64 invalid "ldc.i4.0\n\tstfld int32 Class::valid" float64
652 ./make_unary_test.sh stfld_no_int invalid "stfld int32 Class::valid" "class Class"
653 ./make_unary_test.sh stfld_obj_native_int unverifiable "ldc.i4.0\n\tstfld int32 Class::valid" 'native int'
655 # Box tests (see 4.1)
657 # Box non-existent type.
658 ./make_unary_test.sh box_bad_type unverifiable "box valuetype NonExistent\n\tpop" "valuetype NonExistent"
660 # Top of stack not assignment compatible with typeToc.
661 ./make_unary_test.sh box_not_compat unverifiable "box [mscorlib]System.Int32\n\tpop" float32
664 ./make_unary_test.sh box_byref unverifiable "box [mscorlib]System.Int32\&\n\tpop" 'int32&'
666 # Box byref-like type.
667 ./make_unary_test.sh box_byref_like unverifiable "box [mscorlib]System.TypedRefrence\n\tpop" typedref
669 #This is is illegal since you cannot have a Void local variable, it should go into the structural tests part
671 #./make_unary_test.sh box_void unverifiable "box [mscorlib]System.Void\n\tpop" "class [mscorlib]System.Void"
677 ./make_ret_test.sh ret_coercion_1 unverifiable int8 int64
678 ./make_ret_test.sh ret_coercion_2 unverifiable int8 float64
679 ./make_ret_test.sh ret_coercion_3 unverifiable int8 'int8&'
680 ./make_ret_test.sh ret_coercion_4 unverifiable int8 object
682 ./make_ret_test.sh ret_coercion_5 unverifiable 'unsigned int8' int64
683 ./make_ret_test.sh ret_coercion_6 unverifiable 'unsigned int8' float64
684 ./make_ret_test.sh ret_coercion_6 unverifiable 'unsigned int8' float64
685 ./make_ret_test.sh ret_coercion_6 unverifiable 'unsigned int8' float64
686 ./make_ret_test.sh ret_coercion_7 unverifiable 'unsigned int8' 'unsigned int8&'
687 ./make_ret_test.sh ret_coercion_8 unverifiable 'unsigned int8' object
689 ./make_ret_test.sh ret_coercion_9 unverifiable bool int64
690 ./make_ret_test.sh ret_coercion_10 unverifiable bool float64
691 ./make_ret_test.sh ret_coercion_11 unverifiable bool 'bool&'
692 ./make_ret_test.sh ret_coercion_12 unverifiable bool object
694 ./make_ret_test.sh ret_coercion_13 unverifiable int16 int64
695 ./make_ret_test.sh ret_coercion_14 unverifiable int16 float64
696 ./make_ret_test.sh ret_coercion_15 unverifiable int16 'int16&'
697 ./make_ret_test.sh ret_coercion_16 unverifiable int16 object
699 ./make_ret_test.sh ret_coercion_17 unverifiable 'unsigned int16' int64
700 ./make_ret_test.sh ret_coercion_18 unverifiable 'unsigned int16' float64
701 ./make_ret_test.sh ret_coercion_19 unverifiable 'unsigned int16' 'unsigned int16&'
702 ./make_ret_test.sh ret_coercion_20 unverifiable 'unsigned int16' object
704 ./make_ret_test.sh ret_coercion_21 unverifiable char int64
705 ./make_ret_test.sh ret_coercion_22 unverifiable char float64
706 ./make_ret_test.sh ret_coercion_23 unverifiable char 'char&'
707 ./make_ret_test.sh ret_coercion_24 unverifiable char object
709 ./make_ret_test.sh ret_coercion_25 unverifiable int32 int64
710 ./make_ret_test.sh ret_coercion_26 unverifiable int32 float64
711 ./make_ret_test.sh ret_coercion_27 unverifiable int32 'int32&'
712 ./make_ret_test.sh ret_coercion_28 unverifiable int32 object
714 ./make_ret_test.sh ret_coercion_29 unverifiable 'unsigned int32' int64
715 ./make_ret_test.sh ret_coercion_30 unverifiable 'unsigned int32' float64
716 ./make_ret_test.sh ret_coercion_31 unverifiable 'unsigned int32' 'unsigned int32&'
717 ./make_ret_test.sh ret_coercion_32 unverifiable 'unsigned int32' object
719 ./make_ret_test.sh ret_coercion_33 unverifiable int64 int32
720 ./make_ret_test.sh ret_coercion_34 unverifiable int64 'native int'
721 ./make_ret_test.sh ret_coercion_35 unverifiable int64 float64
722 ./make_ret_test.sh ret_coercion_36 unverifiable int64 'int64&'
723 ./make_ret_test.sh ret_coercion_37 unverifiable int64 object
725 ./make_ret_test.sh ret_coercion_38 unverifiable 'unsigned int64' int32
726 ./make_ret_test.sh ret_coercion_39 unverifiable 'unsigned int64' 'native int'
727 ./make_ret_test.sh ret_coercion_40 unverifiable 'unsigned int64' float64
728 ./make_ret_test.sh ret_coercion_41 unverifiable 'unsigned int64' 'unsigned int64&'
729 ./make_ret_test.sh ret_coercion_42 unverifiable 'unsigned int64' object
731 ./make_ret_test.sh ret_coercion_43 unverifiable 'native int' int64
732 ./make_ret_test.sh ret_coercion_44 unverifiable 'native int' float64
733 ./make_ret_test.sh ret_coercion_45 unverifiable 'native int' 'native int&'
734 ./make_ret_test.sh ret_coercion_46 unverifiable 'native int' object
736 ./make_ret_test.sh ret_coercion_47 unverifiable 'native unsigned int' int64
737 ./make_ret_test.sh ret_coercion_48 unverifiable 'native unsigned int' float64
738 ./make_ret_test.sh ret_coercion_49 unverifiable 'native unsigned int' 'native unsigned int&'
739 ./make_ret_test.sh ret_coercion_50 unverifiable 'native unsigned int' object
741 ./make_ret_test.sh ret_coercion_51 unverifiable float32 int32
742 ./make_ret_test.sh ret_coercion_52 unverifiable float32 'native int'
743 ./make_ret_test.sh ret_coercion_53 unverifiable float32 int64
744 ./make_ret_test.sh ret_coercion_54 unverifiable float32 'float32&'
745 ./make_ret_test.sh ret_coercion_55 unverifiable float32 object
747 ./make_ret_test.sh ret_coercion_56 unverifiable float64 int32
748 ./make_ret_test.sh ret_coercion_57 unverifiable float64 'native int'
749 ./make_ret_test.sh ret_coercion_58 unverifiable float64 int64
750 ./make_ret_test.sh ret_coercion_59 unverifiable float64 'float64&'
751 ./make_ret_test.sh ret_coercion_60 unverifiable float64 object
753 ./make_ret_test.sh ret_coercion_61 unverifiable object int32
754 ./make_ret_test.sh ret_coercion_62 unverifiable object 'native int'
755 ./make_ret_test.sh ret_coercion_63 unverifiable object int64
756 ./make_ret_test.sh ret_coercion_64 unverifiable object float64
757 ./make_ret_test.sh ret_coercion_65 unverifiable object 'object&'
759 ./make_ret_test.sh ret_coercion_66 unverifiable 'class MyValueType' int32
760 ./make_ret_test.sh ret_coercion_67 unverifiable 'class MyValueType' 'native int'
761 ./make_ret_test.sh ret_coercion_68 unverifiable 'class MyValueType' int64
762 ./make_ret_test.sh ret_coercion_69 unverifiable 'class MyValueType' float64
763 ./make_ret_test.sh ret_coercion_70 unverifiable 'class MyValueType' 'class MyValueType&'
764 ./make_ret_test.sh ret_coercion_71 unverifiable 'class MyValueType' object
766 ./make_ret_test.sh ret_coercion_72 unverifiable 'int32&' int32
767 ./make_ret_test.sh ret_coercion_73 unverifiable 'int32&' 'native int'
768 ./make_ret_test.sh ret_coercion_74 unverifiable 'int32&' int64
769 ./make_ret_test.sh ret_coercion_75 unverifiable 'int32&' float64
770 ./make_ret_test.sh ret_coercion_76 unverifiable 'int32&' object
772 ./make_ret_test.sh ret_coercion_77 unverifiable typedref int32
773 ./make_ret_test.sh ret_coercion_78 unverifiable typedref 'native int'
774 ./make_ret_test.sh ret_coercion_79 unverifiable typedref int64
775 ./make_ret_test.sh ret_coercion_80 unverifiable typedref float64
776 ./make_ret_test.sh ret_coercion_81 unverifiable typedref 'typedref&'
777 ./make_ret_test.sh ret_coercion_82 unverifiable typedref object
780 ./make_ret_test.sh ret_sub_type valid ClassA ClassSubA
781 ./make_ret_test.sh ret_same_type valid ClassA ClassA
782 ./make_ret_test.sh ret_obj_iface valid object InterfaceA
783 ./make_ret_test.sh ret_obj_obj valid object object
784 ./make_ret_test.sh ret_obj_string valid object string
785 ./make_ret_test.sh ret_string_string valid string string
786 ./make_ret_test.sh ret_obj_vector valid object 'int32[]'
787 ./make_ret_test.sh ret_obj_array valid object 'int32[,]'
788 ./make_ret_test.sh ret_obj_generic valid object 'class Template`1<object>'
789 ./make_ret_test.sh ret_obj_value_type unverifiable object 'MyValueType'
790 ./make_ret_test.sh ret_string_value_type unverifiable string 'MyValueType'
791 ./make_ret_test.sh ret_class_value_type unverifiable ClassA 'MyValueType'
793 ./make_ret_test.sh ret_string_string unverifiable string object
794 ./make_ret_test.sh ret_string_string unverifiable 'int32[]' object
796 ./make_ret_test.sh ret_iface_imple valid InterfaceA ImplA
797 ./make_ret_test.sh ret_arrays_same_vector valid 'int32[]' 'int32[]'
798 ./make_ret_test.sh ret_arrays_same_rank valid 'int32[,]' 'int32[,]'
800 ./make_ret_test.sh ret_sub_type_array_covariant valid 'ClassA[]' 'ClassSubA[]'
801 ./make_ret_test.sh ret_same_type_array_covariant valid 'ClassA[]' 'ClassA[]'
802 ./make_ret_test.sh ret_obj_iface_array_covariant valid 'object[]' 'InterfaceA[]'
803 ./make_ret_test.sh ret_iface_imple_array_covariant valid 'InterfaceA[]' 'ImplA[]'
805 ./make_ret_test.sh ret_diff_types unverifiable ClassA ClassB
806 ./make_ret_test.sh ret_class_vale_type unverifiable ClassA MyValueType
807 ./make_ret_test.sh ret_diff_vale_type unverifiable MyValueType2 MyValueType
808 ./make_ret_test.sh ret_value_type_class unverifiable MyValueType ClassA
809 ./make_ret_test.sh ret_super_type unverifiable ClassSubA ClassB
810 ./make_ret_test.sh ret_interfaces unverifiable InterfaceA InterfaceB
811 ./make_ret_test.sh ret_interface_class unverifiable ClassA InterfaceB
813 ./make_ret_test.sh ret_object_type valid object ClassA
814 ./make_ret_test.sh ret_type_object unverifiable ClassA object
817 ./make_ret_test.sh ret_array_diff_rank unverifiable 'int32[]' 'int32[,]'
818 ./make_ret_test.sh ret_array_diff_rank2 unverifiable 'int32[,]' 'int32[]'
819 ./make_ret_test.sh ret_array_diff_rank3 unverifiable 'int32[,,]' 'int32[,]'
820 ./make_ret_test.sh ret_array_not_covar unverifiable 'ClassA[]' 'ClassB[]'
821 ./make_ret_test.sh ret_array_not_covar2 unverifiable 'ClassSubA[]' 'ClassA[]'
822 ./make_ret_test.sh ret_array_not_covar3 unverifiable 'ClassA[]' 'InterfaceA[]'
823 ./make_ret_test.sh ret_array_not_covar4 unverifiable 'ImplA[]' 'InterfaceA[]'
824 ./make_ret_test.sh ret_array_not_covar5 unverifiable 'InterfaceA[]' 'object[]'
828 ./make_ret_test.sh ret_generics_1 valid 'class Template' 'class Template'
829 ./make_ret_test.sh ret_generics_2 valid 'class Template`1<int32>' 'class Template`1<int32>'
830 ./make_ret_test.sh ret_generics_3 valid 'class Template`2<int32,object>' 'class Template`2<int32,object>'
832 ./make_ret_test.sh ret_generics_4 unverifiable 'class Template' 'class Template`1<object>'
833 ./make_ret_test.sh ret_generics_5 unverifiable 'class Template`1<object>' 'class Template'
834 ./make_ret_test.sh ret_generics_6 unverifiable 'class Template`1<object>' 'class Template`1<string>'
835 ./make_ret_test.sh ret_generics_7 unverifiable 'class Template`1<string>' 'class Template`1<object>'
836 ./make_ret_test.sh ret_generics_8 unverifiable 'class Template`1<object>' 'class Template`2<object, object>'
837 ./make_ret_test.sh ret_generics_9 unverifiable 'class Template`2<object, object>' 'class Template`1<object>'
839 ./make_ret_test.sh ret_generics_10 unverifiable 'class Template`1<int32>' 'class Template`1<int16>'
840 ./make_ret_test.sh ret_generics_11 unverifiable 'class Template`1<int16>' 'class Template`1<int32>'
841 ./make_ret_test.sh ret_generics_12 unverifiable 'class Template`1<unsigned int32>' 'class Template`1<int32>'
842 ./make_ret_test.sh ret_generics_13 unverifiable 'class Template`1<float32>' 'class Template`1<float64>'
843 ./make_ret_test.sh ret_generics_14 unverifiable 'class Template`1<float64>' 'class Template`1<float32>'
846 ./make_ret_test.sh ret_generics_15 valid 'class ICovariant`1<object>' 'class ICovariant`1<string>'
847 ./make_ret_test.sh ret_generics_16 valid 'class ICovariant`1<string>' 'class ICovariant`1<string>'
848 ./make_ret_test.sh ret_generics_17 unverifiable 'class ICovariant`1<string>' 'class ICovariant`1<object>'
850 ./make_ret_test.sh ret_generics_18 valid 'class IContravariant`1<string>' 'class IContravariant`1<object>'
851 ./make_ret_test.sh ret_generics_19 valid 'class IContravariant`1<string>' 'class IContravariant`1<string>'
852 ./make_ret_test.sh ret_generics_20 unverifiable 'class IContravariant`1<object>' 'class IContravariant`1<string>'
854 ./make_ret_test.sh ret_generics_21 valid 'class ICovariant`1<ClassA>' 'class ICovariant`1<ClassSubA>'
855 ./make_ret_test.sh ret_generics_22 valid 'class ICovariant`1<ClassSubA>' 'class ICovariant`1<ClassSubA>'
856 ./make_ret_test.sh ret_generics_23 unverifiable 'class ICovariant`1<ClassSubA>' 'class ICovariant`1<ClassA>'
858 ./make_ret_test.sh ret_generics_24 valid 'class IContravariant`1<ClassSubA>' 'class IContravariant`1<ClassA>'
859 ./make_ret_test.sh ret_generics_25 valid 'class IContravariant`1<ClassSubA>' 'class IContravariant`1<ClassSubA>'
860 ./make_ret_test.sh ret_generics_26 unverifiable 'class IContravariant`1<ClassA>' 'class IContravariant`1<ClassSubA>'
863 ./make_ret_test.sh ret_generics_27 valid 'class Bivariant`2<ClassA, ClassB>' 'class Bivariant`2<ClassA, ClassB>'
864 ./make_ret_test.sh ret_generics_28 valid 'class Bivariant`2<ClassA, ClassB>' 'class Bivariant`2<ClassA, object>'
865 ./make_ret_test.sh ret_generics_29 valid 'class Bivariant`2<ClassA, ClassB>' 'class Bivariant`2<ClassSubA, ClassB>'
866 ./make_ret_test.sh ret_generics_30 valid 'class Bivariant`2<ClassA, ClassB>' 'class Bivariant`2<ClassSubA, object>'
867 ./make_ret_test.sh ret_generics_31 unverifiable 'class Bivariant`2<ClassA, ClassB>' 'class Bivariant`2<object, ClassB>'
868 ./make_ret_test.sh ret_generics_32 unverifiable 'class Bivariant`2<ClassA, ClassB>' 'class Bivariant`2<object, object>'
869 ./make_ret_test.sh ret_generics_33 unverifiable 'class Bivariant`2<ClassA, object>' 'class Bivariant`2<object, ClassB>'
870 ./make_ret_test.sh ret_generics_34 unverifiable 'class Bivariant`2<ClassA, object>' 'class Bivariant`2<ClassA, ClassB>'
873 ./make_ret_test.sh ret_generics_types_1 unverifiable 'class Template`1<int8>' 'class Template`1<unsigned int8>'
874 ./make_ret_test.sh ret_generics_types_2 unverifiable 'class Template`1<int8>' 'class Template`1<int16>'
875 ./make_ret_test.sh ret_generics_types_3 unverifiable 'class Template`1<int8>' 'class Template`1<unsigned int16>'
876 ./make_ret_test.sh ret_generics_types_4 unverifiable 'class Template`1<int8>' 'class Template`1<int32>'
877 ./make_ret_test.sh ret_generics_types_5 unverifiable 'class Template`1<int8>' 'class Template`1<unsigned int32>'
878 ./make_ret_test.sh ret_generics_types_6 unverifiable 'class Template`1<int8>' 'class Template`1<int64>'
879 ./make_ret_test.sh ret_generics_types_7 unverifiable 'class Template`1<int8>' 'class Template`1<unsigned int64>'
880 ./make_ret_test.sh ret_generics_types_8 unverifiable 'class Template`1<int8>' 'class Template`1<float32>'
881 ./make_ret_test.sh ret_generics_types_9 unverifiable 'class Template`1<int8>' 'class Template`1<float64>'
882 ./make_ret_test.sh ret_generics_types_10 unverifiable 'class Template`1<int8>' 'class Template`1<bool>'
884 ./make_ret_test.sh ret_generics_types_11 unverifiable 'class Template`1<int8>' 'class Template`1<native int>'
885 ./make_ret_test.sh ret_generics_types_12 unverifiable 'class Template`1<int8>' 'class Template`1<native unsigned int>'
886 ./make_ret_test.sh ret_generics_types_13 unverifiable 'class Template`1<int8>' 'class Template`1<int32 *>'
890 ./make_ret_test.sh ret_generics_inheritante_1 valid 'class Base`1<int32>' 'class SubClass1`1<int32>'
891 ./make_ret_test.sh ret_generics_inheritante_2 valid 'class SubClass1`1<int32>' 'class SubClass1`1<int32>'
892 ./make_ret_test.sh ret_generics_inheritante_3 unverifiable 'class SubClass1`1<int32>' 'class Base`1<int32>'
893 ./make_ret_test.sh ret_generics_inheritante_4 unverifiable 'class Base`1<int32>' 'class SubClass1`1<float32>'
894 ./make_ret_test.sh ret_generics_inheritante_5 valid 'class Base`1<object>' 'class SubClass1`1<object>'
896 ./make_ret_test.sh ret_generics_inheritante_6 valid 'class BaseBase`2<int32, object>' 'class SubClass1`1<object>'
897 ./make_ret_test.sh ret_generics_inheritante_7 valid 'class BaseBase`2<int32, object>' 'class Base`1<object>'
899 ./make_ret_test.sh ret_generics_inheritante_8 unverifiable 'class BaseBase`2<int64, object>' 'class Base`1<object>'
900 ./make_ret_test.sh ret_generics_inheritante_9 unverifiable 'class BaseBase`2<int64, object>' 'class SubClass1`1<object>'
901 ./make_ret_test.sh ret_generics_inheritante_10 unverifiable 'class BaseBase`2<int32, object>' 'class SubClass1`1<string>'
905 ./make_ret_test.sh ret_generics_inheritante_12 valid 'class Interface`1<int32>' 'class InterfaceImpl`1<int32>'
906 ./make_ret_test.sh ret_generics_inheritante_13 valid 'class InterfaceImpl`1<int32>' 'class InterfaceImpl`1<int32>'
907 ./make_ret_test.sh ret_generics_inheritante_14 unverifiable 'class InterfaceImpl`1<int32>' 'class Interface`1<int32>'
908 ./make_ret_test.sh ret_generics_inheritante_15 unverifiable 'class Interface`1<int32>' 'class InterfaceImpl`1<float32>'
909 ./make_ret_test.sh ret_generics_inheritante_16 valid 'class Interface`1<object>' 'class InterfaceImpl`1<object>'
912 #mix variance with inheritance
913 #only interfaces or delegates can have covariance
915 #mix variance with interfaces
917 ./make_ret_test.sh ret_generics_inheritante_28 valid 'class ICovariant`1<object>' 'class CovariantImpl`1<string>'
918 ./make_ret_test.sh ret_generics_inheritante_29 valid 'class ICovariant`1<string>' 'class CovariantImpl`1<string>'
919 ./make_ret_test.sh ret_generics_inheritante_30 unverifiable 'class ICovariant`1<string>' 'class CovariantImpl`1<object>'
921 ./make_ret_test.sh ret_generics_inheritante_31 valid 'class IContravariant`1<string>' 'class ContravariantImpl`1<object>'
922 ./make_ret_test.sh ret_generics_inheritante_32 valid 'class IContravariant`1<string>' 'class ContravariantImpl`1<string>'
923 ./make_ret_test.sh ret_generics_inheritante_33 unverifiable 'class IContravariant`1<object>' 'class ContravariantImpl`1<string>'
925 ./make_ret_test.sh ret_generics_inheritante_34 valid 'class ICovariant`1<ClassA>' 'class CovariantImpl`1<ClassSubA>'
926 ./make_ret_test.sh ret_generics_inheritante_35 valid 'class ICovariant`1<ClassSubA>' 'class CovariantImpl`1<ClassSubA>'
927 ./make_ret_test.sh ret_generics_inheritante_36 unverifiable 'class ICovariant`1<ClassSubA>' 'class CovariantImpl`1<ClassA>'
929 ./make_ret_test.sh ret_generics_inheritante_37 valid 'class IContravariant`1<ClassSubA>' 'class ContravariantImpl`1<ClassA>'
930 ./make_ret_test.sh ret_generics_inheritante_38 valid 'class IContravariant`1<ClassSubA>' 'class ContravariantImpl`1<ClassSubA>'
931 ./make_ret_test.sh ret_generics_inheritante_39 unverifiable 'class IContravariant`1<ClassA>' 'class ContravariantImpl`1<ClassSubA>'
934 #mix variance with arrays
936 ./make_ret_test.sh ret_generics_arrays_1 valid 'class ICovariant`1<object>' 'class ICovariant`1<object[]>'
937 ./make_ret_test.sh ret_generics_arrays_2 valid 'class ICovariant`1<object>' 'class ICovariant`1<int32[]>'
938 ./make_ret_test.sh ret_generics_arrays_3 valid 'class ICovariant`1<object>' 'class ICovariant`1<int32[,]>'
939 ./make_ret_test.sh ret_generics_arrays_4 valid 'class ICovariant`1<object>' 'class ICovariant`1<string[]>'
940 ./make_ret_test.sh ret_generics_arrays_5 valid 'class ICovariant`1<object[]>' 'class ICovariant`1<string[]>'
941 ./make_ret_test.sh ret_generics_arrays_6 valid 'class ICovariant`1<object[]>' 'class ICovariant`1<ClassA[]>'
942 ./make_ret_test.sh ret_generics_arrays_7 valid 'class ICovariant`1<ClassA[]>' 'class ICovariant`1<ClassSubA[]>'
943 ./make_ret_test.sh ret_generics_arrays_8 valid 'class ICovariant`1<InterfaceA[]>' 'class ICovariant`1<ImplA[]>'
944 ./make_ret_test.sh ret_generics_arrays_9 valid 'class ICovariant`1<object[,]>' 'class ICovariant`1<string[,]>'
945 ./make_ret_test.sh ret_generics_arrays_10 valid 'class ICovariant`1<ClassA[,]>' 'class ICovariant`1<ClassSubA[,]>'
947 ./make_ret_test.sh ret_generics_arrays_1_b valid 'class ICovariant`1<object>' 'class CovariantImpl`1<object[]>'
948 ./make_ret_test.sh ret_generics_arrays_2_b valid 'class ICovariant`1<object>' 'class CovariantImpl`1<int32[]>'
949 ./make_ret_test.sh ret_generics_arrays_3_b valid 'class ICovariant`1<object>' 'class CovariantImpl`1<int32[,]>'
950 ./make_ret_test.sh ret_generics_arrays_4_b valid 'class ICovariant`1<object>' 'class ICovariant`1<string[]>'
951 ./make_ret_test.sh ret_generics_arrays_5_b valid 'class ICovariant`1<object[]>' 'class CovariantImpl`1<string[]>'
952 ./make_ret_test.sh ret_generics_arrays_6_b valid 'class ICovariant`1<object[]>' 'class CovariantImpl`1<ClassA[]>'
953 ./make_ret_test.sh ret_generics_arrays_7_b valid 'class ICovariant`1<ClassA[]>' 'class CovariantImpl`1<ClassSubA[]>'
954 ./make_ret_test.sh ret_generics_arrays_8_b valid 'class ICovariant`1<InterfaceA[]>' 'class CovariantImpl`1<ImplA[]>'
955 ./make_ret_test.sh ret_generics_arrays_9_b valid 'class ICovariant`1<object[,]>' 'class CovariantImpl`1<string[,]>'
956 ./make_ret_test.sh ret_generics_arrays_10_b valid 'class ICovariant`1<ClassA[,]>' 'class CovariantImpl`1<ClassSubA[,]>'
958 ./make_ret_test.sh ret_generics_arrays_11 valid 'class IContravariant`1<object[]>' 'class IContravariant`1<object>'
959 ./make_ret_test.sh ret_generics_arrays_12 valid 'class IContravariant`1<int32[]>' 'class IContravariant`1<object>'
960 ./make_ret_test.sh ret_generics_arrays_13 valid 'class IContravariant`1<int32[,]>' 'class IContravariant`1<object>'
961 ./make_ret_test.sh ret_generics_arrays_14 valid 'class IContravariant`1<string[]>' 'class IContravariant`1<object>'
962 ./make_ret_test.sh ret_generics_arrays_15 valid 'class IContravariant`1<string[]>' 'class IContravariant`1<object[]>'
963 ./make_ret_test.sh ret_generics_arrays_16 valid 'class IContravariant`1<ClassA[]>' 'class IContravariant`1<object[]>'
964 ./make_ret_test.sh ret_generics_arrays_17 valid 'class IContravariant`1<ClassSubA[]>' 'class IContravariant`1<ClassA[]>'
965 ./make_ret_test.sh ret_generics_arrays_18 valid 'class IContravariant`1<ImplA[]>' 'class IContravariant`1<InterfaceA[]>'
966 ./make_ret_test.sh ret_generics_arrays_19 valid 'class IContravariant`1<string[,]>' 'class IContravariant`1<object[,]>'
967 ./make_ret_test.sh ret_generics_arrays_20 valid 'class IContravariant`1<ClassSubA[,]>' 'class IContravariant`1<ClassA[,]>'
969 ./make_ret_test.sh ret_generics_arrays_11_b valid 'class IContravariant`1<object[]>' 'class ContravariantImpl`1<object>'
970 ./make_ret_test.sh ret_generics_arrays_12_b valid 'class IContravariant`1<int32[]>' 'class ContravariantImpl`1<object>'
971 ./make_ret_test.sh ret_generics_arrays_13_b valid 'class IContravariant`1<int32[,]>' 'class ContravariantImpl`1<object>'
972 ./make_ret_test.sh ret_generics_arrays_14_b valid 'class IContravariant`1<string[]>' 'class ContravariantImpl`1<object>'
973 ./make_ret_test.sh ret_generics_arrays_15_b valid 'class IContravariant`1<string[]>' 'class ContravariantImpl`1<object[]>'
974 ./make_ret_test.sh ret_generics_arrays_16_b valid 'class IContravariant`1<ClassA[]>' 'class ContravariantImpl`1<object[]>'
975 ./make_ret_test.sh ret_generics_arrays_17_b valid 'class IContravariant`1<ClassSubA[]>' 'class ContravariantImpl`1<ClassA[]>'
976 ./make_ret_test.sh ret_generics_arrays_18_b valid 'class IContravariant`1<ImplA[]>' 'class ContravariantImpl`1<InterfaceA[]>'
977 ./make_ret_test.sh ret_generics_arrays_19_b valid 'class IContravariant`1<string[,]>' 'class ContravariantImpl`1<object[,]>'
978 ./make_ret_test.sh ret_generics_arrays_20_b valid 'class IContravariant`1<ClassSubA[,]>' 'class ContravariantImpl`1<ClassA[,]>'
980 ./make_ret_test.sh ret_generics_arrays_21 unverifiable 'class ICovariant`1<int32[]>' 'class ICovariant`1<object>'
981 ./make_ret_test.sh ret_generics_arrays_22 unverifiable 'class ICovariant`1<int32[]>' 'class ICovariant`1<object[]>'
982 ./make_ret_test.sh ret_generics_arrays_23 unverifiable 'class ICovariant`1<string[]>' 'class ICovariant`1<object[]>'
983 ./make_ret_test.sh ret_generics_arrays_24 unverifiable 'class ICovariant`1<ClassSubA[]>' 'class ICovariant`1<ClassA[]>'
984 ./make_ret_test.sh ret_generics_arrays_25 unverifiable 'class ICovariant`1<int32[]>' 'class ICovariant`1<int32[,]>'
985 ./make_ret_test.sh ret_generics_arrays_26 unverifiable 'class ICovariant`1<ImplA[]>' 'class ICovariant`1<InterfaceA[]>'
987 ./make_ret_test.sh ret_generics_arrays_27 unverifiable 'class IContravariant`1<object>' 'class IContravariant`1<int32[]>'
988 ./make_ret_test.sh ret_generics_arrays_28 unverifiable 'class IContravariant`1<object[]>' 'class IContravariant`1<int32[]>'
989 ./make_ret_test.sh ret_generics_arrays_29 unverifiable 'class IContravariant`1<object[]>' 'class IContravariant`1<string[]>'
990 ./make_ret_test.sh ret_generics_arrays_30 unverifiable 'class IContravariant`1<ClassA[]>' 'class IContravariant`1<ClassSubA[]>'
991 ./make_ret_test.sh ret_generics_arrays_31 unverifiable 'class IContravariant`1<int32[,]>' 'class IContravariant`1<int32[]>'
992 ./make_ret_test.sh ret_generics_arrays_32 unverifiable 'class IContravariant`1<InterfaceA[]>' 'class IContravariant`1<ImplA[]>'
995 #generic with value types
997 ./make_ret_test.sh ret_generics_vt_1 valid 'class Template`1<MyValueType>' 'class Template`1<MyValueType>'
998 ./make_ret_test.sh ret_generics_vt_2 unverifiable 'class Template`1<MyValueType>' 'class Template`1<MyValueType2>'
999 ./make_ret_test.sh ret_generics_vt_3 unverifiable 'class ICovariant`1<MyValueType>' 'class ICovariant`1<MyValueType2>'
1000 ./make_ret_test.sh ret_generics_vt_4 unverifiable 'class ICovariant`1<object>' 'class ICovariant`1<MyValueType2>'
1003 #mix variance and generic compatibility with all kinds of types valid for a generic parameter (hellish task - huge task)
1004 #test with composite generics ( Foo<Bar<int>> )
1006 #test variance with delegates
1011 #the verifier must check if the generic instantiation is valid
1013 for OP in ldarg ldloc
1018 ARGS_2='int32 V, int32 V1'
1021 ARGS_3='int32 V, int32 V1, int32 V1'
1024 ARGS_4='int32 V, int32 V1, int32 V1, int32 V1'
1027 POPS="pop\npop\npop\npop\npop\npop\npop\npop\n"
1029 if [ "$OP" == "ldloc" ]; then
1043 ./make_load_test.sh ${OP}0_max_params invalid "${OP}.0" '' ''
1044 ./make_load_test.sh ${OP}1_max_params invalid "${OP}.1" '' ''
1045 ./make_load_test.sh ${OP}2_max_params invalid "${OP}.2" '' ''
1046 ./make_load_test.sh ${OP}3_max_params invalid "${OP}.3" '' ''
1048 ./make_load_test.sh ${OP}1_1_max_params invalid "${OP}.1" "${ARGS_1}" "${LOCALS_1}"
1049 ./make_load_test.sh ${OP}2_1_max_params invalid "${OP}.2" "${ARGS_1}" "${LOCALS_1}"
1050 ./make_load_test.sh ${OP}3_1_max_params invalid "${OP}.3" "${ARGS_1}" "${LOCALS_1}"
1052 ./make_load_test.sh ${OP}2_2_max_params invalid "${OP}.2" "${ARGS_2}" "${LOCALS_2}"
1053 ./make_load_test.sh ${OP}3_2_max_params invalid "${OP}.3" "${ARGS_2}" "${LOCALS_2}"
1055 ./make_load_test.sh ${OP}3_3_max_params invalid "${OP}.3" "${ARGS_3}" "${LOCALS_3}"
1057 ./make_load_test.sh ${OP}0_max_params valid "${OP}.0" "${ARGS_1}" "${LOCALS_1}"
1058 ./make_load_test.sh ${OP}1_max_params valid "${OP}.1" "${ARGS_2}" "${LOCALS_2}"
1059 ./make_load_test.sh ${OP}2_max_params valid "${OP}.2" "${ARGS_3}" "${LOCALS_3}"
1060 ./make_load_test.sh ${OP}3_max_params valid "${OP}.3" "${ARGS_4}" "${LOCALS_4}"
1062 ./make_load_test.sh ${OP}0_stack_overflow invalid "${OP}.0\n${OP}.0\n${OP}.0\n${OP}.0\n${OP}.0\n${OP}.0\n${OP}.0\n${OP}.0\n${OP}.0\n${POPS}" "${ARGS_4}" "${LOCALS_4}"
1063 ./make_load_test.sh ${OP}1_stack_overflow invalid "${OP}.1\n${OP}.1\n${OP}.1\n${OP}.1\n${OP}.1\n${OP}.1\n${OP}.1\n${OP}.1\n${OP}.1\n${POPS}" "${ARGS_4}" "${LOCALS_4}"
1064 ./make_load_test.sh ${OP}2_stack_overflow invalid "${OP}.2\n${OP}.2\n${OP}.2\n${OP}.2\n${OP}.2\n${OP}.2\n${OP}.2\n${OP}.2\n${OP}.2\n${POPS}" "${ARGS_4}" "${LOCALS_4}"
1065 ./make_load_test.sh ${OP}3_stack_overflow invalid "${OP}.3\n${OP}.3\n${OP}.3\n${OP}.3\n${OP}.3\n${OP}.3\n${OP}.3\n${OP}.3\n${OP}.3\n${POPS}" "${ARGS_4}" "${LOCALS_4}"
1068 #Test if the values used for brtrue and brfalse are valid
1070 for OP in brfalse brtrue 'brfalse.s' 'brtrue.s'
1072 ./make_bool_branch_test.sh boolean_branch_${I}_1 valid ${OP} int8
1073 ./make_bool_branch_test.sh boolean_branch_${I}_2 valid ${OP} int16
1074 ./make_bool_branch_test.sh boolean_branch_${I}_3 valid ${OP} int32
1075 ./make_bool_branch_test.sh boolean_branch_${I}_4 valid ${OP} int64
1076 ./make_bool_branch_test.sh boolean_branch_${I}_5 valid ${OP} 'native int'
1078 #unmanaged pointers are not veriable types, all ops on unmanaged pointers are unverifiable
1079 ./make_bool_branch_test.sh boolean_branch_${I}_6 unverifiable ${OP} 'int32*'
1080 ./make_bool_branch_test.sh boolean_branch_${I}_8 unverifiable ${OP} 'method int32 *(int32)'
1082 ./make_bool_branch_test.sh boolean_branch_${I}_7 valid ${OP} 'int32&'
1083 ./make_bool_branch_test.sh boolean_branch_${I}_9 valid ${OP} object
1084 ./make_bool_branch_test.sh boolean_branch_${I}_10 valid ${OP} string
1085 ./make_bool_branch_test.sh boolean_branch_${I}_11 valid ${OP} 'ClassA'
1086 ./make_bool_branch_test.sh boolean_branch_${I}_12 valid ${OP} 'int32[]'
1087 ./make_bool_branch_test.sh boolean_branch_${I}_13 valid ${OP} 'int32[,,]'
1088 ./make_bool_branch_test.sh boolean_branch_${I}_14 valid ${OP} 'class Template`1<object>'
1089 ./make_bool_branch_test.sh boolean_branch_${I}_15 valid ${OP} 'class Template`1<object>[]'
1090 ./make_bool_branch_test.sh boolean_branch_${I}_16 valid ${OP} 'class Template`1<object>[,,]'
1092 ./make_bool_branch_test.sh boolean_branch_${I}_17 invalid ${OP} float32
1093 ./make_bool_branch_test.sh boolean_branch_${I}_18 invalid ${OP} float64
1094 ./make_bool_branch_test.sh boolean_branch_${I}_19 invalid ${OP} 'class MyValueType'
1095 ./make_bool_branch_test.sh boolean_branch_${I}_20 invalid ${OP} 'class ValueTypeTemplate`1<object>'