X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmini%2Filtests.il.in;h=565ab748f56de5228c4bc453865f9f7dd8400574;hb=9342e7d1d4e5d0d3248de33d05b2c2b993314bd6;hp=b5bf6fe5e3626968e97738fa5e513988ac9b5df2;hpb=cc1aa1dacca10174d88dab2696c75d3561086ff5;p=mono.git diff --git a/mono/mini/iltests.il.in b/mono/mini/iltests.il.in index b5bf6fe5e36..565ab748f56 100644 --- a/mono/mini/iltests.il.in +++ b/mono/mini/iltests.il.in @@ -1,4 +1,8 @@ -.assembly iltests {} +.assembly iltests { + .custom instance void class [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::'.ctor'() = ( + 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78 // ....T..WrapNonEx + 63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 ) // ceptionThrows. +} .assembly extern TestDriver {} .assembly extern mscorlib {} @@ -585,6 +589,9 @@ COND: ldloc.0 } .method static public int32 test_24_tail_calls2 () il managed { + // Some platforms might not be able to AOT tail calls + .custom instance void class [TestDriver]CategoryAttribute::'.ctor'(string) = (01 00 08 21 46 55 4C 4C 41 4F 54 00 00 ) // ...!FULLAOT.. + .maxstack 16 .locals init ( int32 i, @@ -602,6 +609,9 @@ COND: ldloc.0 } .method public static int32 test_5_jmp () cil managed { + // Some platforms might not be able to AOT tail calls + .custom instance void class [TestDriver]CategoryAttribute::'.ctor'(string) = (01 00 08 21 46 55 4C 4C 41 4F 54 00 00 ) // ...!FULLAOT.. + ldc.i4.1 ldc.i4.2 call int32 Tests::jmp2 (int32, int32) @@ -838,6 +848,22 @@ COND: ldloc.0 ret } + .method public static int32 test_0_lconv_to_ovf_i8 () cil managed { + .maxstack 16 + + ldc.i4 1234 + conv.i8 + conv.ovf.i8 + conv.i4 + ldc.i4 1234 + beq L1 + ldc.i4.1 + ret + L1: + ldc.i4.0 + ret + } + .method public static int32 test_0_lconv_to_ovf_u8_un () cil managed { .maxstack 16 @@ -941,7 +967,7 @@ COND: ldloc.0 ret } -#if !defined(__ppc__) && !defined(__powerpc__) && !defined(__arm__) +#if !defined(__ppc__) && !defined(__powerpc__) && !defined(__arm__) && !defined(__sparc__) && !defined(__mips__) // PPC handles overflow by clipping, but this test assumes // no overflow handling. According to ECMA the result of // float->int conversion is undefined if overflow occurs, so @@ -1100,6 +1126,18 @@ COND: ldloc.0 ret } + .method public static int32 test_7_conv_ovf_u4_un () { + .maxstack 2 + .locals init (unsigned int32) + + ldc.i4.7 + conv.ovf.u4.un + stloc.0 + ldloc.0 + conv.i4 + ret + } + .method public static int32 test_1_bug_74591 () { .maxstack 16 .locals init (int32) @@ -2035,6 +2073,9 @@ HAS_VALUE: ldc.i4.1 .method public static hidebysig default int32 test_0_many_args_tail_call () cil managed { + // Some platforms might not be able to AOT tail calls + .custom instance void class [TestDriver]CategoryAttribute::'.ctor'(string) = (01 00 08 21 46 55 4C 4C 41 4F 54 00 00 ) // ...!FULLAOT.. + // Method begins at RVA 0x2154 // Code size 43 (0x2b) .maxstack 17 @@ -2292,5 +2333,293 @@ OK_2: call int32 Tests::regress_497271_helper (int32) ret } - + + .field private static int32 Value + + .method public static hidebysig specialname + default int32 regress_513931_inner () cil managed + { + // Method begins at RVA 0x225c + // Code size 52 (0x34) + .maxstack 2 + .locals init ( + int32 V_0, + int32 V_1, + bool V_2) + + ldc.i4 999 + stsfld int32 Tests::Value + + IL_0000: nop + IL_0001: ldsfld int32 Tests::Value + IL_0006: stloc.0 + IL_0007: ldloc.0 + IL_0008: ldc.i4.0 + IL_0009: cgt + IL_000b: ldc.i4.0 + IL_000c: ceq + IL_000e: stloc.2 + IL_000f: ldloc.2 + IL_0010: brtrue.s IL_0027 + + IL_0012: nop + IL_0013: ldloc.0 + IL_0014: ldc.i4.s 0x7b + IL_0016: ceq + IL_0018: ldc.i4.0 + IL_0019: ceq + IL_001b: stloc.2 + IL_001c: ldloc.2 + IL_001d: brtrue.s IL_0023 + + IL_001f: ldc.i4.m1 + IL_0020: stloc.1 + IL_0021: br.s IL_0032 + + IL_0023: ldc.i4.1 + IL_0024: stloc.1 + IL_0025: br.s IL_0032 + + IL_0027: + IL_002c: newobj instance void class [mscorlib]System.Exception::'.ctor'() + IL_0031: throw + IL_0032: ldloc.1 + IL_0033: ret + } + + .method public static hidebysig specialname + default int32 test_0_regress_513931 () cil managed + { + call int32 Tests::regress_513931_inner () + pop + ldc.i4.0 + ret + } + + .method public static default int32 test_0_newarr_i8 () cil managed + { + ldc.i4 1000 + conv.i8 + newarr [mscorlib]System.Boolean + pop + ldc.i4 0 + ret + } + + .method public static specialname + default int32 return_1_noinline () cil managed noinlining + { + .maxstack 0 + + ldc.i4.1 + ret + } + + // Only happens with -O=-deadce,cmov + .method public static default int32 test_0_cmov_unused_582322 () cil managed + { + .maxstack 2 + .locals init ( + int32 V_0 + ) + call int32 Tests::return_1_noinline () + ldc.i4.1 + bne.un L0 + ldloc.s 0 + pop + L0: + ldc.i4.0 + ret + } + + .method public static hidebysig + default int32 test_0_regress_586664 () cil managed + { + // Method begins at RVA 0x20f4 + // Code size 76 (0x4c) + .maxstack 6 + .locals init ( + float64 V_0, + float64[] V_1) + IL_0000: ldc.r8 1. + IL_0009: ldc.r8 2. + IL_0012: ldc.r8 1. + IL_001b: call float64 class [mscorlib]System.Math::Pow(float64, float64) + IL_0020: div + IL_0021: stloc.0 + IL_0022: ldc.i4.2 + IL_0023: newarr [mscorlib]System.Double + IL_0028: dup + IL_0029: ldc.i4.0 + IL_002a: ldloc.0 + IL_002b: neg + IL_002c: stelem.r8 + IL_002d: dup + IL_002e: ldc.i4.1 + IL_002f: ldloc.0 + IL_0030: neg + IL_0031: stelem.r8 + IL_0032: stloc.1 + IL_0033: ldloc.1 + IL_0034: ldc.i4.0 + IL_0035: ldelem.r8 + IL_0036: ldc.r8 -0.5 + IL_003f: bne.un IL_004a + + IL_0044: ldc.i4.0 + IL_0045: br IL_004b + + IL_004a: ldc.i4.1 + IL_004b: ret + } + + .method public static int32 test_2_leave_multiple_blocks_from_end () + { + .locals init (int32 V_0) + + .try { + .try { + nop + nop + leave END + } finally { + ldloc.0 + ldc.i4.1 + add + stloc.0 + endfinally + } + nop + leave END + } finally { + ldloc.0 + ldc.i4.1 + add + stloc.0 + endfinally + } +END: + ldloc.0 + ret + } + + .method public static int32 test_3_leave_multiple_blocks_from_hole () + { + .locals init (int32 V_0) + + .try { + .try { + ldloc.0 + brtrue REST + leave BEFORE_END +REST: + nop + nop + leave END + } finally { + ldloc.0 + ldc.i4.1 + add + stloc.0 + endfinally + } + nop + leave END + } finally { + ldloc.0 + ldc.i4.1 + add + stloc.0 + endfinally + } +BEFORE_END: + ldloc.0 + ldc.i4.1 + add + stloc.0 +END: + ldloc.0 + ret + } + + .class nested private auto ansi sealed beforefieldinit Pair`2 + extends [mscorlib]System.ValueType + { + .field public !0 key + .field public !1 'value' + } + + .method private static hidebysig + default bool ContentEquals (valuetype Tests/Pair`2 v) cil managed + { + .maxstack 8 + IL_0000: ldarga.s 0 + IL_0006: ldnull + constrained. valuetype Tests/Pair`2 + IL_0007: callvirt instance bool class [mscorlib]System.Object::Equals(object) + ret + } + + .method public static hidebysig default int32 test_0_constrained_gshared_595863 () cil managed + { + .locals init ( + valuetype Tests/Pair`2 V_0, + valuetype Tests/Pair`2 V_1) + IL_0000: ldloca.s 0 + IL_0002: initobj valuetype Tests/Pair`2 + IL_0008: ldloc.0 + IL_0009: stloc.1 + IL_000a: ldloca.s 1 + IL_000c: ldstr "A" + IL_0011: stfld !0 valuetype Tests/Pair`2::key + IL_0016: ldloca.s 1 + IL_0018: ldstr "B" + IL_001d: stfld !1 valuetype Tests/Pair`2::'value' + IL_0022: ldloc.1 + IL_0023: stloc.0 + IL_0024: ldloc.0 + IL_0025: call bool class Tests::ContentEquals (valuetype Tests/Pair`2) + brfalse SUCCESS + ldc.i4.1 + ret + SUCCESS: + ldc.i4.0 + ret + } + + .method public static default int32 test_0_wrap_non_exception_throws () cil managed + { + .try { + newobj instance void class [mscorlib]System.Object::'.ctor'() + throw + leave IL_0 + } catch class [mscorlib]System.Runtime.CompilerServices.RuntimeWrappedException { + leave IL_0 + } + IL_0: + ldc.i4.0 + ret + } + + .method public static default int32 test_0_typespec_modopt () cil managed { + ldtoken class Tests modopt (Tests) + pop + ldc.i4.0 + ret + } + + .method public hidebysig static int32 SizeOfT() cil managed + { + .maxstack 8 + + sizeof !!0 + ret + } + + .method public static default int32 test_1_sizeof_gshared () cil managed { + call int32 Tests::SizeOfT() + ldc.i4.1 + ceq + ret + } }