grammar updates
[mono.git] / mono / mini / iltests.il
1 .assembly iltests {}\r
2 .assembly extern TestDriver {}\r
3 .assembly extern mscorlib {}\r
4 \r
5 .class public auto ansi sealed beforefieldinit Tests {\r
6 \r
7         .method static public int32 Main() il managed {\r
8                 .entrypoint\r
9                 \r
10                 ldtoken Tests\r
11                 call       class [mscorlib]System.Type [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)\r
12                 call       int32 [TestDriver]TestDriver::RunTests(class [mscorlib]System.Type)\r
13                 ret\r
14         }\r
15 \r
16         .method static public int32 test_3_copy_used_bug () il managed {\r
17 \r
18                 .locals init (\r
19                         int32 size,\r
20                         int32 res\r
21                 )\r
22 \r
23                 ldc.i4 0\r
24                 stloc res\r
25 \r
26                 ldc.i4 1\r
27                 stloc size\r
28 \r
29                 ldloc size\r
30                 ldloc size\r
31                 ldloc size\r
32                 add\r
33                 stloc size\r
34                 ldloc size\r
35                 add\r
36                 stloc res\r
37 \r
38                 ldloc res\r
39                 ret\r
40         }\r
41 \r
42         // demonstrate that the copy_used_var is not a fix for the above bug\r
43         .method static public int32 test_3_copy_used_indir_bug () il managed {\r
44 \r
45                 .locals init (\r
46                         int32 size,\r
47                         int32 res\r
48                 )\r
49 \r
50                 ldc.i4 0\r
51                 stloc res\r
52 \r
53                 ldc.i4 1\r
54                 stloc size\r
55 \r
56                 ldloc size\r
57                 ldloca size\r
58                 ldloc size\r
59                 ldloc size\r
60                 add\r
61                 stind.i4\r
62                 ldloc size\r
63                 add\r
64                 stloc res\r
65 \r
66                 ldloc res\r
67                 ret\r
68         }\r
69 \r
70         .method static public void do_nothing (int32 a) il managed {\r
71                 ret\r
72         }\r
73         \r
74         // demonstrate the block_split failure: needs -O=inline\r
75         // mini -O=inline --compile Tests:test_0_split_block_bug iltests.exe\r
76         .method static public int32 test_0_split_block_bug () il managed {\r
77 \r
78                 .locals init (\r
79                         int32 i1\r
80                 )\r
81 \r
82                 ldc.i4 1\r
83                 stloc i1\r
84  test_label:\r
85                 ldloc i1\r
86                 call void class Tests::do_nothing (int32)\r
87                 ldc.i4 0\r
88                 brtrue test_label\r
89                 \r
90                 ldc.i4 0\r
91                 ret\r
92         }\r
93 \r
94         .method public void inline_do_nothing () il managed {\r
95                 ret\r
96         }\r
97         .method static public int32 test_1_checkthis_inlining () il managed {\r
98                 ldnull\r
99                 call instance void class Tests::inline_do_nothing ()\r
100                 ldc.i4 1\r
101                 ret\r
102         }\r
103 }\r