2 .assembly extern TestDriver {}
3 .assembly extern mscorlib {}
5 .class public auto ansi sealed beforefieldinit Tests {
7 .method static public int32 Main(string[] args) il managed {
11 call class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
13 call int32 [TestDriver]TestDriver::RunTests(class [mscorlib]System.Type, string[])
17 // make sure the register allocator works when the return value of
19 .method static public int32 test_0_div_regalloc () il managed {
33 .method static public int32 test_1_ceq_to_i4 () il managed {
47 .method static public int32 test_3_shl_regvars () il managed {
94 .method static public int32 test_1_fceq_to_i4 () il managed {
114 // This should be manually checked. Basically under -O=linears,
115 // you should not see tons of register spilling.
117 .method static public int32 test_1_bytedreg_free () il managed {
153 // This should be manually checked. Basically under -O=linears,
154 // you should not see tons of register spilling.
156 .method static public int32 test_0_bytesreg1_free () il managed {
195 .method static public int32 test_1_shift_regvar () il managed {
216 // this only happens with the managed pointer, not an unmanaged one.
217 .method static public int32 test_0_foo () il managed {
234 .method static public int32 test_0_localloc () cil managed {
235 .locals init (native int, native int, native int, native int, int32)
260 // Check zero initialized
309 // Try allocations bigger than one page
335 .method private static void do_localloc () cil managed {
340 IL_0001: ldc.i4 131072
347 // Check that localloc can't be inlined
348 .method static public int32 test_0_localloc_inline () cil managed {
358 START: call void class Tests::do_localloc()
371 .method static public int32 test_3_copy_used_bug () il managed {
397 // demonstrate that the copy_used_var is not a fix for the above bug
398 .method static public int32 test_3_copy_used_indir_bug () il managed {
425 .method static public void do_nothing (int32 a) il managed {
429 // demonstrate the block_split failure: needs -O=inline
430 // mini -O=inline --compile Tests:test_0_split_block_bug iltests.exe
431 .method static public int32 test_0_split_block_bug () il managed {
441 call void class Tests::do_nothing (int32)
449 .method public void inline_do_nothing () il managed {
452 .method static public int32 test_1_checkthis_inlining () il managed {
454 call instance void class Tests::inline_do_nothing ()
459 .class nested private auto ansi sealed beforefieldinit TailCallStruct
460 extends [mscorlib]System.ValueType {
461 .field public int32 a
462 .field public int32 b
465 .method static valuetype Tests/TailCallStruct tail1 (valuetype Tests/TailCallStruct arg) {
468 ldfld int32 Tests/TailCallStruct::a
471 stfld int32 Tests/TailCallStruct::a
474 ldfld int32 Tests/TailCallStruct::a
477 stfld int32 Tests/TailCallStruct::a
482 .method static valuetype Tests/TailCallStruct tail2 (valuetype Tests/TailCallStruct arg) {
485 call valuetype Tests/TailCallStruct Tests::tail1 (valuetype Tests/TailCallStruct)
491 // Tail calls are not supported on PowerPC.
493 .method static public int32 test_0_tail_calls () il managed {
496 valuetype Tests/TailCallStruct arg
500 stfld int32 Tests/TailCallStruct::a
503 stfld int32 Tests/TailCallStruct::b
505 call valuetype Tests/TailCallStruct Tests::tail2 (valuetype Tests/TailCallStruct)
508 ldfld int32 Tests/TailCallStruct::a
510 ldfld int32 Tests/TailCallStruct::b
517 .method static public int32 tail3 (int32 i, int32 j) il managed {
524 .method static public int32 tail4 (int32 i, int32 j) il managed {
529 // Test arg0 allocated to a register
539 // Test switched up argument variables as the actual arguments
543 call int32 Tests::tail3 (int32, int32)
547 .method static public int32 test_24_tail_calls2 () il managed {
560 call int32 Tests::tail4 (int32, int32)
565 .method public static int32 test_5_jmp () cil managed {
566 jmp int32 Tests::jmp2 ()
571 .method public static int32 jmp2 () cil managed {
576 .method static public int32 test_11_switch_with_nonempty_stack () il managed {
591 .method public static int32 test_5_endfinally_with_nonempty_stack () il managed {
605 .method public static int32 test_0_conv_ovf_i8_neg () il managed {
620 .method public static int32 test_1234_conv_u4 () cil managed {
629 .method public static int32 test_2_lconv_to_ovf_i4_un () cil managed {
631 .locals init (int32 res)
648 } catch [mscorlib]System.OverflowException {
656 ldc.i8 0xffffffff80000000
662 } catch [mscorlib]System.OverflowException {
672 .method public static int32 test_1_lconv_to_ovf_i_un () cil managed {
674 .locals init (int32 res)
686 .method public static int32 test_32_lconv_to_u8 () cil managed
697 .method public static int32 test_32_lconv_to_i8 () cil managed
708 .method public static int32 test_15_lconv_to_u () cil managed
716 .method public static int32 test_0_get_type_from_handle_on_bblock_boundary () cil managed
723 ldtoken [mscorlib]System.String
726 ldtoken [mscorlib]System.Object
728 call class [mscorlib]'System.Type' class [mscorlib]'System.Type'::'GetTypeFromHandle'(valuetype [mscorlib]'System.RuntimeTypeHandle')
729 callvirt instance string class [mscorlib]System.Type::get_FullName ()
730 ldstr "System.String"
731 callvirt instance bool class [mscorlib]System.Object::Equals(object)
737 .method public static int32 test_0_bug59580 ()
739 ldc.r4 float32(0x7FC00000)
740 ldc.r4 float32(0x7FC00000)
751 .method public static int32 test_1_bug60056 () {
752 .locals init (int32 m5)
770 .method public static int32 test_1_conv_u8_cfold () {
774 ldc.i8 0x00000000ffffffff
780 .method public static int32 test_1_array_type_mismatch_ldelema () {
781 .locals init (int32 r)
797 } catch [mscorlib]System.ArrayTypeMismatchException {
808 .method public static int32 test_1_conv_ovf_i8_with_i4 () {
817 .method public static int32 test_0_initlocals_float_ptr () {
824 newarr [mscorlib]System.Single
832 ldelema [mscorlib]System.Single
842 .method public static int32 test_7_conv_ovf_u8_un () {
844 .locals init (unsigned int64)
854 .method public static int32 test_1_bug_74591 () {
869 .class nested public auto ansi Integer
870 extends [mscorlib]System.Object {
874 .method public hidebysig specialname rtspecialname
875 instance default void .ctor (unsigned int64 i, bool n) cil managed
879 call instance void class [mscorlib]System.Object::.ctor()
882 stfld bool Tests/Integer::n
887 .method public static int32 test_1_bug_74726 () {
896 newobj instance void class Tests/Integer::.ctor(unsigned int64, bool)
897 ldfld bool Tests/Integer::n
903 .class nested private auto ansi sealed xxx
904 extends [mscorlib]System.ValueType
906 .field public object a
908 .method public hidebysig specialname rtspecialname
909 instance default void .ctor () cil managed
914 } // end of class xxx
916 .method public static int32 test_0_newobj_vtype () {
919 valuetype Tests/xxx V_0
922 newobj instance void valuetype Tests/xxx::.ctor ()
925 ldfld object Tests/xxx::a
934 .method public static int32 test_1_filters () {
942 ldstr "OnErrorSub test Exception"
943 newobj instance void class [mscorlib]System.Exception::.ctor(string)
953 // Should not be called
975 .class nested private auto ansi sealed beforefieldinit TheStruct
976 extends [mscorlib]System.ValueType {
977 .field public int32 a
978 .field public int32 b
981 .method public static int32 test_5_cpobj () {
984 valuetype Tests/TheStruct v_0,
985 valuetype Tests/TheStruct v_1
990 stfld int32 Tests/TheStruct::a
994 stfld int32 Tests/TheStruct::b
998 cpobj Tests/TheStruct
1001 ldfld int32 Tests/TheStruct::a
1003 ldfld int32 Tests/TheStruct::b
1009 .method public static int32 test_5_ldobj_stloc_optimization () {
1012 valuetype Tests/TheStruct v_0,
1013 valuetype Tests/TheStruct v_1
1018 stfld int32 Tests/TheStruct::a
1022 stfld int32 Tests/TheStruct::b
1025 ldobj valuetype Tests/TheStruct
1029 ldfld int32 Tests/TheStruct::a
1031 ldfld int32 Tests/TheStruct::b
1037 .method public static int32 test_1_cpobj_reference () {
1044 newobj instance void object::.ctor()
1057 .method public static int32 test_1_initobj_reference () {
1063 newobj instance void object::.ctor()
1075 .method public static int32 test_1_ldobj_reference () {
1081 newobj instance void object::.ctor()
1091 .method public static int32 test_5_vtype_on_bb_boundary () {
1094 valuetype Tests/TheStruct v_0,
1095 valuetype Tests/TheStruct v_1
1100 stfld int32 Tests/TheStruct::a
1104 stfld int32 Tests/TheStruct::b
1111 ldfld int32 Tests/TheStruct::a
1113 ldfld int32 Tests/TheStruct::b
1118 .method public static int32 test_5_different_in_stacks () cil managed {
1142 .method public static int32 test_3_larray_get_set () {
1147 newobj instance void int32[0...]::.ctor(int32)
1152 call instance void int32[0...]::Set(int32, int32)
1156 call instance void int32[0...]::Set(int32, int32)
1160 call instance int32 int32[0...]::Get(int32)
1163 call instance int32 int32[0...]::Get(int32)
1168 .method public static int32 test_0_pop_side_effects () {
1177 catch [mscorlib]System.ArithmeticException {
1189 .method public static void regalloc_regress_78314_helper (object o) cil managed
1194 .method public static int32 test_1_regalloc_regress_78314 () cil managed
1196 // Code size 68 (0x44)
1198 .locals init (int32 V_0, bool V_1)
1201 IL_0002: br.s IL_003b
1204 IL_001e: ldc.i4.s 10
1207 IL_0022: ldc.i4.s 10
1211 IL_0028: box [mscorlib]System.Boolean
1212 IL_0032: call void Tests::regalloc_regress_78314_helper(object)
1219 IL_003f: blt.s IL_0004
1228 .method public static void try_block_end_remove_if_useless () cil managed {
1246 .try T_START to T1_END finally handler F1_START to F1_END
1249 .method public static int32 test_0_try_block_end_remove_if_useless () cil managed {
1250 call void class Tests::try_block_end_remove_if_useless ()
1255 .method private static int32 test_0_regress_78629_switch_next_ins_target () cil managed
1265 // This belongs to basic-float.cs, but its hard to tell mcs/csc to
1266 // generate the non .un version of the opcodes
1267 .method private static hidebysig
1268 default int32 test_4_float_branch_nan () cil managed
1270 // Method begins at RVA 0x27a4
1271 // Code size 74 (0x4a)
1277 IL_0000: ldc.r8 (00 00 00 00 00 00 f8 ff)
1285 IL_0018: bge.s IL_001a
1297 IL_0022: ble.s IL_002e
1308 IL_0036: blt.s IL_0038
1319 IL_0040: bgt.s IL_0042
1330 } // end of method Tests::test_5_float_branch_nan
1332 .method private static hidebysig
1333 default void regress_80622_inner (object x) cil managed
1335 .locals (unsigned int8 i)
1336 // Method begins at RVA 0x2050
1337 // Code size 14 (0xe)
1340 IL_1001: unbox unsigned int8
1341 IL_1006: ldobj unsigned int8
1342 IL_000b: conv.ovf.i4.un
1348 .method private static hidebysig
1349 default int32 test_0_regress_80622 () cil managed
1353 IL_0005: box unsigned int8
1354 IL_000a: call void class Tests::regress_80622_inner (object)
1359 .method private static default int32 test_0_regresss_80190 () cil managed
1362 .locals init (int32 V_0,
1366 IL_0002: ldloca.s V_0