ret
}
+ .method static public int32 tail3 (int32 i, int32 j) il managed {
+ ldarg.0
+ ldarg.1
+ add
+ ret
+ }
+
+ .method static public int32 tail4 (int32 i, int32 j) il managed {
+ .maxstack 16
+ .locals init (
+ int32 k)
+
+ // Test arg0 allocated to a register
+ ldarg.0
+ ldarg.0
+ ldarg.0
+ ldarg.0
+ add
+ add
+ add
+ starg 0
+
+ // Test switched up argument variables as the actual arguments
+ ldarg.1
+ ldarg.0
+ tail.
+ call int32 Tests::tail3 (int32, int32)
+ ret
+ }
+
+ .method static public int32 test_24_tail_calls2 () il managed {
+ .maxstack 16
+ .locals init (
+ int32 i,
+ int32 j)
+
+ ldc.i4.4
+ stloc.0
+ ldc.i4.8
+ stloc.1
+
+ ldloc.0
+ ldloc.1
+ call int32 Tests::tail4 (int32, int32)
+ ret
+ }
+
+ .method public static int32 test_5_jmp () cil managed {
+ jmp int32 Tests::jmp2 ()
+ ldc.i4.0
+ ret
+ }
+
+ .method public static int32 jmp2 () cil managed {
+ ldc.i4.5
+ ret
+ }
+
.method static public int32 test_11_switch_with_nonempty_stack () il managed {
.maxstack 16
ret
}
+ .method public static int32 test_1234_conv_u4 () cil managed {
+ .maxstack 16
+
+ ldc.i4 1234
+ conv.u4
+ conv.i4
+ ret
+ }
+
+ .method public static int32 test_2_lconv_to_ovf_i4_un () cil managed {
+ .maxstack 16
+ .locals init (int32 res)
+
+ ldc.i4 0x7fffffff
+ conv.u8
+ conv.ovf.i4.un
+ pop
+
+ ldc.i4.2
+ stloc res
+
+ .try {
+ ldc.i8 0x80000000
+ conv.ovf.i4.un
+ pop
+ ldc.i4.0
+ stloc res
+ leave RET
+ } catch [mscorlib]System.OverflowException {
+ pop
+ leave IL_0
+ }
+
+ IL_0:
+
+ .try {
+ ldc.i8 0xffffffff80000000
+ conv.ovf.i4.un
+ pop
+ ldc.i4.1
+ stloc res
+ leave RET
+ } catch [mscorlib]System.OverflowException {
+ pop
+ leave RET
+ }
+
+ RET:
+ ldloc res
+ ret
+ }
+
+ .method public static int32 test_1_lconv_to_ovf_i_un () cil managed {
+ .maxstack 16
+ .locals init (int32 res)
+
+ ldc.i4 0x7fffffff
+ conv.u8
+ conv.ovf.i.un
+ conv.i4
+ pop
+
+ ldc.i4.1
+ ret
+ }
+
+ .method public static int32 test_32_lconv_to_u8 () cil managed
+ {
+ .maxstack 16
+
+ ldc.i4 32
+ conv.i8
+ conv.u8
+ conv.i4
+ ret
+ }
+
+ .method public static int32 test_32_lconv_to_i8 () cil managed
+ {
+ .maxstack 16
+
+ ldc.i4 32
+ conv.i8
+ conv.i8
+ conv.i4
+ ret
+ }
+
+ .method public static int32 test_15_lconv_to_u () cil managed
+ {
+ ldc.i8 0x10000000f
+ conv.u
+ conv.i4
+ ret
+ }
+
.method public static int32 test_0_get_type_from_handle_on_bblock_boundary () cil managed
{
.maxstack 16
ret
}
- .class nested private auto ansi sealed beforefieldinit FooStruct
- extends [mscorlib]System.ValueType {
-
- .method public hidebysig specialname rtspecialname instance void .ctor () cil managed {
- .maxstack 8
- ret
- }
- }
-
- .method public static int32 test_0_newobj_vtype () {
- .maxstack 8
-
- newobj instance void Tests/FooStruct::.ctor()
- pop
- ldc.i4.0
- ret
- }
-
.method public static int32 test_7_conv_ovf_u8_un () {
.maxstack 2
.locals init (unsigned int64)
ret
}
+ .class nested public auto ansi Integer
+ extends [mscorlib]System.Object {
+
+ .field public bool n
+
+ .method public hidebysig specialname rtspecialname
+ instance default void .ctor (unsigned int64 i, bool n) cil managed
+ {
+ .maxstack 8
+ ldarg.0
+ call instance void class [mscorlib]System.Object::.ctor()
+ ldarg.0
+ ldarg.2
+ stfld bool Tests/Integer::n
+ ret
+ }
+ }
+
+ .method public static int32 test_1_bug_74726 () {
+ .maxstack 16
+
+ ldc.i4.2
+ conv.ovf.u8
+ ldc.i4.1
+ conv.ovf.u8
+ mul.ovf.un
+ ldc.i4.1
+ newobj instance void class Tests/Integer::.ctor(unsigned int64, bool)
+ ldfld bool Tests/Integer::n
+ ldc.i4.1
+ ceq
+ ret
+ }
+
+ .class nested private auto ansi sealed xxx
+ extends [mscorlib]System.ValueType
+ {
+ .field public object a
+
+ .method public hidebysig specialname rtspecialname
+ instance default void .ctor () cil managed
+ {
+ .maxstack 8
+ ret
+ }
+ } // end of class xxx
+
+ .method public static int32 test_0_newobj_vtype () {
+ .maxstack 6
+ .locals init (
+ valuetype Tests/xxx V_0
+ )
+
+ newobj instance void valuetype Tests/xxx::.ctor ()
+ stloc.0
+ ldloca.s 0
+ ldfld object Tests/xxx::a
+ brfalse OK
+ ldc.i4.s 1
+ ret
+ OK:
+ ldc.i4.s 0
+ ret
+ }
+
+ .method public static int32 test_1_filters () {
+ .maxstack 16
+ .locals init (
+ int32 res
+ )
+
+ .try { // 0
+ .try {
+ ldstr "OnErrorSub test Exception"
+ newobj instance void class [mscorlib]System.Exception::.ctor(string)
+ throw
+ leave.s IL_0033
+ }
+ filter {
+ pop
+ ldc.i4.0
+ endfilter
+ } {
+ pop
+ // Should not be called
+ ldc.i4.2
+ stloc res
+ leave.s IL_0033
+ }
+ }
+ filter {
+ pop
+ ldc.i4.1
+ endfilter
+ } {
+ pop
+ ldc.i4.1
+ stloc res
+ leave.s IL_0033
+
+ }
+ IL_0033:
+ ldloc res
+ ret
+ }
+
+ .class nested private auto ansi sealed beforefieldinit TheStruct
+ extends [mscorlib]System.ValueType {
+ .field public int32 a
+ .field public int32 b
+ }
+
+ .method public static int32 test_5_cpobj () {
+ .maxstack 8
+ .locals init (
+ valuetype Tests/TheStruct v_0,
+ valuetype Tests/TheStruct v_1
+ )
+
+ ldloca v_0
+ ldc.i4.2
+ stfld int32 Tests/TheStruct::a
+
+ ldloca v_0
+ ldc.i4.3
+ stfld int32 Tests/TheStruct::b
+
+ ldloca v_1
+ ldloca v_0
+ cpobj Tests/TheStruct
+
+ ldloca v_1
+ ldfld int32 Tests/TheStruct::a
+ ldloca v_1
+ ldfld int32 Tests/TheStruct::b
+ add
+
+ ret
+ }
+
+ .method public static int32 test_5_ldobj_stloc_optimization () {
+ .maxstack 8
+ .locals init (
+ valuetype Tests/TheStruct v_0,
+ valuetype Tests/TheStruct v_1
+ )
+
+ ldloca v_0
+ ldc.i4.2
+ stfld int32 Tests/TheStruct::a
+
+ ldloca v_0
+ ldc.i4.3
+ stfld int32 Tests/TheStruct::b
+
+ ldloca v_0
+ ldobj valuetype Tests/TheStruct
+ stloc.s v_1
+
+ ldloca v_1
+ ldfld int32 Tests/TheStruct::a
+ ldloca v_1
+ ldfld int32 Tests/TheStruct::b
+ add
+
+ ret
+ }
+
+ .method public static int32 test_1_cpobj_reference () {
+ .maxstack 8
+ .locals init (
+ object v_0,
+ object v_1
+ )
+
+ newobj instance void object::.ctor()
+ stloc v_0
+
+ ldloca v_1
+ ldloca v_0
+ cpobj object
+
+ ldloc v_0
+ ldloc v_1
+ ceq
+ ret
+ }
+
+ .method public static int32 test_1_initobj_reference () {
+ .maxstack 8
+ .locals init (
+ object v_0
+ )
+
+ newobj instance void object::.ctor()
+ stloc v_0
+
+ ldloca v_0
+ initobj object
+
+ ldloc v_0
+ ldnull
+ ceq
+ ret
+ }
+
+ .method public static int32 test_1_ldobj_reference () {
+ .maxstack 8
+ .locals init (
+ object v_0
+ )
+
+ newobj instance void object::.ctor()
+ stloc v_0
+
+ ldloc v_0
+ ldloca v_0
+ ldobj object
+ ceq
+ ret
+ }
+
+ .method public static int32 test_5_vtype_on_bb_boundary () {
+ .maxstack 8
+ .locals init (
+ valuetype Tests/TheStruct v_0,
+ valuetype Tests/TheStruct v_1
+ )
+
+ ldloca v_0
+ ldc.i4.2
+ stfld int32 Tests/TheStruct::a
+
+ ldloca v_0
+ ldc.i4.3
+ stfld int32 Tests/TheStruct::b
+
+ ldloc v_0
+ br L_0
+ L_0: stloc v_1
+
+ ldloca v_1
+ ldfld int32 Tests/TheStruct::a
+ ldloca v_1
+ ldfld int32 Tests/TheStruct::b
+ add
+ ret
+ }
+
+ .method public static int32 test_5_different_in_stacks () cil managed {
+ .maxstack 16
+
+ ldc.i4.1
+ ldc.i4.1
+ beq L_0
+
+ ldc.i4.3
+ ldc.i4.3
+ br L_1
+ ldc.i4.3
+ ldc.i4.3
+ br L_2
+ L_0: ldc.i4.2
+ ldc.i4.3
+ ldc.i4.1
+ ldc.i4.1
+ beq L_2
+ L_1: add
+ ret
+ L_2: add
+ ret
+ }
+
+ .method public static int32 test_3_larray_get_set () {
+ .locals init (
+ int32[2] V_0)
+
+ ldc.i4.2
+ newobj instance void int32[0...]::.ctor(int32)
+ stloc.0
+ ldloc.0
+ ldc.i4.0
+ ldc.i4 1
+ call instance void int32[0...]::Set(int32, int32)
+ ldloc.0
+ ldc.i4.1
+ ldc.i4 2
+ call instance void int32[0...]::Set(int32, int32)
+
+ ldloc.0
+ ldc.i4.0
+ call instance int32 int32[0...]::Get(int32)
+ ldloc.0
+ ldc.i4.1
+ call instance int32 int32[0...]::Get(int32)
+ add
+ ret
+ }
+
+ .method public static int32 test_0_pop_side_effects () {
+ .try {
+ ldc.r8 1
+ ldc.r8 0
+ div
+ ckfinite
+ pop
+ leave FAIL
+ }
+ catch [mscorlib]System.ArithmeticException {
+ pop
+ leave L_0
+ }
+ L_0:
+ ldc.i4.0
+ ret
+ FAIL:
+ ldc.i4.1
+ ret
+ }
+
+ .method public static void regalloc_regress_78314_helper (object o) cil managed
+ {
+ ret
+ }
+
+ .method public static int32 test_1_regalloc_regress_78314 () cil managed
+ {
+ // Code size 68 (0x44)
+ .maxstack 6
+ .locals init (int32 V_0, bool V_1)
+ IL_0000: ldc.i4.0
+ IL_0001: stloc.0
+ IL_0002: br.s IL_003b
+
+ IL_0004:
+ IL_001e: ldc.i4.s 10
+ IL_0020: ldloc.0
+ IL_0021: shl
+ IL_0022: ldc.i4.s 10
+ IL_0024: ldloc.0
+ IL_0025: shl
+ IL_0026: ceq
+ IL_0028: box [mscorlib]System.Boolean
+ IL_0032: call void Tests::regalloc_regress_78314_helper(object)
+ IL_0037: ldloc.0
+ IL_0038: ldc.i4.1
+ IL_0039: add
+ IL_003a: stloc.0
+ IL_003b: ldloc.0
+ IL_003c: ldc.i4.8
+ IL_003f: blt.s IL_0004
+
+ ldloc.0
+ ldc.i4.8
+ ceq
+ conv.i4
+ ret
+ }
+
+ .method public static void try_block_end_remove_if_useless () cil managed {
+ .maxstack 8
+
+ T_START:
+ ldstr "Start"
+ pop
+ leave.s COMPLETE
+ T1_END:
+
+ COMPLETE:
+ ret
+
+ F1_START:
+ ldstr "Finally1"
+ pop
+ endfinally
+ F1_END:
+
+ .try T_START to T1_END finally handler F1_START to F1_END
+ }
+
+ .method public static int32 test_0_try_block_end_remove_if_useless () cil managed {
+ call void class Tests::try_block_end_remove_if_useless ()
+ ldc.i4.0
+ ret
+ }
+
+ .method private static int32 test_0_regress_78629_switch_next_ins_target () cil managed
+ {
+ ldc.i4.0
+ switch (target)
+ target: ldstr "bar"
+ pop
+ ldc.i4.0
+ ret
+ }
+
+ // This belongs to basic-float.cs, but its hard to tell mcs/csc to
+ // generate the non .un version of the opcodes
+ .method private static hidebysig
+ default int32 test_4_float_branch_nan () cil managed
+ {
+ // Method begins at RVA 0x27a4
+ // Code size 74 (0x4a)
+ .maxstack 2
+ .locals init (
+ float64 V_0,
+ float64 V_1,
+ int32 V_2)
+ IL_0000: ldc.r8 (00 00 00 00 00 00 f8 ff)
+ IL_0009: stloc.0
+ IL_000a: ldc.r8 1.
+ IL_0013: stloc.1
+ IL_0014: ldc.i4.0
+ IL_0015: stloc.2
+ IL_0016: ldloc.0
+ IL_0017: ldloc.1
+ IL_0018: bge.s IL_001a
+
+ br L1
+ IL_001a: ldloc.2
+ IL_001b: ret
+ L1:
+ IL_001c: ldloc.2
+ IL_001d: ldc.i4.1
+ IL_001e: add
+ IL_001f: stloc.2
+ IL_0020: ldloc.0
+ IL_0021: ldloc.1
+ IL_0022: ble.s IL_002e
+ br L2
+ IL_002e: ldloc.2
+ IL_002f: ret
+ L2:
+ IL_0030: ldloc.2
+ IL_0031: ldc.i4.1
+ IL_0032: add
+ IL_0033: stloc.2
+ IL_0034: ldloc.0
+ IL_0035: ldloc.1
+ IL_0036: blt.s IL_0038
+ br L3
+ IL_0038: ldloc.2
+ IL_0039: ret
+ L3:
+ IL_003a: ldloc.2
+ IL_003b: ldc.i4.1
+ IL_003c: add
+ IL_003d: stloc.2
+ IL_003e: ldloc.0
+ IL_003f: ldloc.1
+ IL_0040: bgt.s IL_0042
+ br L4
+ IL_0042: ldloc.2
+ IL_0043: ret
+ L4:
+ IL_0044: ldloc.2
+ IL_0045: ldc.i4.1
+ IL_0046: add
+ IL_0047: stloc.2
+ IL_0048: ldloc.2
+ IL_0049: ret
+ } // end of method Tests::test_5_float_branch_nan
+
+ .method private static hidebysig
+ default void regress_80622_inner (object x) cil managed
+ {
+ .locals (unsigned int8 i)
+ // Method begins at RVA 0x2050
+ // Code size 14 (0xe)
+ .maxstack 8
+ IL_1000: ldarg.0
+ IL_1001: unbox unsigned int8
+ IL_1006: ldobj unsigned int8
+ IL_000b: conv.ovf.i4.un
+ IL_000c: pop
+ IL_000d: ret
+ }
+
+ // method line 2
+ .method private static hidebysig
+ default int32 test_0_regress_80622 () cil managed
+ {
+ .maxstack 8
+ IL_0000: ldc.i4 255
+ IL_0005: box unsigned int8
+ IL_000a: call void class Tests::regress_80622_inner (object)
+ ldc.i4.0
+ IL_000f: ret
+ }
+
}