2006-01-21 Martin Baulig <martin@ximian.com>
[mono.git] / mono / mini / basic-calls.cs
index 2b11f48b2b0166c02eef3edfd8139d91230bb9e4..276f4b9cd8c65133bbeb5e92e46806685292fd9b 100644 (file)
@@ -232,19 +232,48 @@ class Tests {
                return isnan (f) ? 1 : 0;
        }
 
-       struct FooStruct {
+       static int first_is_zero (int v1, int v2) {
+               if (v1 != 0)
+                       return -1;
+               return v2;
+       }
+       static int test_1_handle_dup_stloc () {
+               int index = 0;
+               int val = first_is_zero (index, ++index);
+               if (val != 1)
+                       return 2;
+               return 1;
+       }
 
-               public FooStruct (long l) {
-               }
+       static long return_5low () {
+               return 5;
+       }
+       
+       static long return_5high () {
+               return 0x500000000;
        }
 
-       static int test_0_calls_opcode_emulation () {
-               // Test that emulated opcodes do not clobber arguments already in
-               // out registers
-               checked {
-                       long val = 10000;
-                       new FooStruct (val * 10000);
-               }
+       public static int test_3_long_ret () {
+               long val = return_5low ();
+               return (int) (val - 2);
+       }
+
+       public static int test_1_long_ret2 () {
+               long val = return_5high ();
+               if (val > 0xffffffff)
+                       return 1;
+               return 0;
+       }
+
+       static void doit (double value, out long m) {
+               m = (long) value;
+       }
+
+       public static int test_0_ftol_clobber () {
+               long m;
+               doit (1.3, out m);
+               if (m != 1)
+                       return 2;
                return 0;
        }