2009-05-12 Zoltan Varga <vargaz@gmail.com>
[mono.git] / mono / mini / iltests.il.in
index 8af20f86f2670a4bbc36edf7625265b8297009f8..4e3759739ac85dfdf390864debd743c252f26f1d 100644 (file)
@@ -491,9 +491,11 @@ COND:   ldloc.0
                .field public int32 a
                .field public int32 b
                .field public int32 c
+               .field public int32 d
+               .field public int32 e
        }
 
-       .method static valuetype Tests/TailCallStructBig tail1_big (valuetype Tests/TailCallStructBig arg) {
+       .method static valuetype Tests/TailCallStructBig tail_vret_by_addr_inner (valuetype Tests/TailCallStructBig arg) {
                ldarga 0
                ldarga 0
                ldfld int32 Tests/TailCallStructBig::a
@@ -504,19 +506,36 @@ COND:   ldloc.0
                ret
        }
 
-       .method static valuetype Tests/TailCallStructBig tail2_big (valuetype Tests/TailCallStructBig arg) {
+       .method static valuetype Tests/TailCallStructBig tail_vret_by_addr (valuetype Tests/TailCallStructBig arg) {
                ldarg.0
                tail.
-               call valuetype Tests/TailCallStructBig Tests::tail1_big (valuetype Tests/TailCallStructBig)
+               call valuetype Tests/TailCallStructBig Tests::tail_vret_by_addr_inner (valuetype Tests/TailCallStructBig)
                ret
        }
 
-       .method static public int32 test_0_tail_calls () il managed {
+       .method static public int32 test_3_tail_call_vret_by_addr () il managed {
                .maxstack 16
                .locals init (
-                       valuetype Tests/TailCallStruct arg,
                        valuetype Tests/TailCallStructBig arg2
                )
+
+               ldloca 0
+               ldc.i4.2
+               stfld int32 Tests/TailCallStructBig::a
+               ldloc.0
+               call valuetype Tests/TailCallStructBig Tests::tail_vret_by_addr (valuetype Tests/TailCallStructBig)
+               stloc.0
+
+               ldloca 0
+               ldfld int32 Tests/TailCallStructBig::a
+               ret
+       }
+
+       .method static public int32 test_9_tail_call_vret_by_val () il managed {
+               .maxstack 16
+               .locals init (
+                       valuetype Tests/TailCallStruct arg
+               )
                ldloca 0
                ldc.i4.2
                stfld int32 Tests/TailCallStruct::a
@@ -527,23 +546,11 @@ COND:   ldloc.0
                call valuetype Tests/TailCallStruct Tests::tail2 (valuetype Tests/TailCallStruct)
                stloc.0
 
-               ldloca 1
-               ldc.i4.2
-               stfld int32 Tests/TailCallStructBig::a
-               ldloc.1
-               call valuetype Tests/TailCallStructBig Tests::tail2_big (valuetype Tests/TailCallStructBig)
-               stloc.1
-
                ldloca 0
                ldfld int32 Tests/TailCallStruct::a
                ldloca 0
                ldfld int32 Tests/TailCallStruct::b
                add
-               ldloca 1
-               ldfld int32 Tests/TailCallStructBig::a
-               add
-               ldc.i4 12
-               sub
                ret
        }
 
@@ -934,7 +941,7 @@ COND:   ldloc.0
                ret
        }
 
-#if !defined(__ppc__) && !defined(__powerpc__)
+#if !defined(__ppc__) && !defined(__powerpc__) && !defined(__arm__)
        // 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
@@ -2222,4 +2229,42 @@ OK:
                ret
        }
 */
+
+       .field public static int32 shift1
+
+       .method public static int32 regress_497271_helper (int32 i) cil managed
+       {
+               ldarg.0
+               ret
+       }
+
+       .method public static int32 test_0_regalloc_regress_497271 () cil managed
+       {
+               .locals (int32 var)
+
+               ldc.i4  4
+               stsfld  int32 Tests::shift1
+               ldsfld  int32 Tests::shift1
+               stloc   var
+               ldc.i4  4660
+               ldloc   var
+               shr.un
+               ldc.i4  4660
+               ldc.i4  32
+               ldloc   var
+               sub
+               shl
+               or
+               ldc.i4  1073742115
+               beq     ?L10
+?L9:
+               ldc.i4  1
+               call    int32 Tests::regress_497271_helper (int32)
+               ret
+?L10:
+               ldc.i4  0
+               call    int32 Tests::regress_497271_helper (int32)
+               ret
+       }
+               
 }