2003-11-27 Zoltan Varga <vargaz@freemail.hu>
authorZoltan Varga <vargaz@gmail.com>
Thu, 27 Nov 2003 21:14:24 +0000 (21:14 -0000)
committerZoltan Varga <vargaz@gmail.com>
Thu, 27 Nov 2003 21:14:24 +0000 (21:14 -0000)
* iltests.il: Add tests for tail calls with valuetype arguments.

svn path=/trunk/mono/; revision=20553

mono/mini/ChangeLog
mono/mini/iltests.il

index 7ae407906e89691c99803d29f761921126ea3c72..16cb864c0db75a51c7cb2a12824b532bdffd8628 100644 (file)
@@ -1,3 +1,6 @@
+2003-11-27  Zoltan Varga  <vargaz@freemail.hu>
+
+       * iltests.il: Add tests for tail calls with valuetype arguments.
 
 Thu Nov 27 21:06:37 CET 2003 Paolo Molaro <lupus@ximian.com>
 
index 384e77cb991ada19b59706f576ad04f3e74bf53d..dcbc6a766ab860811e8a9589ed5e663871008897 100644 (file)
                ldc.i4 1\r
                ret\r
        }\r
+\r
+       .class nested private auto ansi sealed beforefieldinit TailCallStruct \r
+               extends [mscorlib]System.ValueType {\r
+               .field public int32 a\r
+               .field public int32 b\r
+       }\r
+\r
+       .method static valuetype Tests/TailCallStruct tail1 (valuetype Tests/TailCallStruct arg) {\r
+               ldarga 0\r
+               ldarga 0\r
+               ldfld int32 Tests/TailCallStruct::a\r
+               ldc.i4.1\r
+               add\r
+               stfld int32 Tests/TailCallStruct::a\r
+               ldarga 0\r
+               ldarga 0\r
+               ldfld int32 Tests/TailCallStruct::a\r
+               ldc.i4.2\r
+               add\r
+               stfld int32 Tests/TailCallStruct::a\r
+               ldarg.0\r
+               ret\r
+       }\r
+\r
+       .method static valuetype Tests/TailCallStruct tail2 (valuetype Tests/TailCallStruct arg) {\r
+               ldarg.0\r
+               tail.\r
+               call valuetype Tests/TailCallStruct Tests::tail1 (valuetype Tests/TailCallStruct)\r
+               ret\r
+       }\r
+\r
+       .method static public int32 test_0_tail_calls () il managed {\r
+               .maxstack 16\r
+               .locals init (\r
+                       valuetype Tests/TailCallStruct arg\r
+               )\r
+               ldloca 0\r
+               ldc.i4.2\r
+               stfld int32 Tests/TailCallStruct::a\r
+               ldloca 0\r
+               ldc.i4.4\r
+               stfld int32 Tests/TailCallStruct::b\r
+               ldloc.0\r
+               call valuetype Tests/TailCallStruct Tests::tail2 (valuetype Tests/TailCallStruct)\r
+               stloc.0\r
+               ldloca 0\r
+               ldfld int32 Tests/TailCallStruct::a\r
+               ldloca 0\r
+               ldfld int32 Tests/TailCallStruct::b\r
+               add\r
+               ldc.i4 9\r
+               sub\r
+               ret\r
+       }\r
 }\r