2005-04-25 Zoltan Varga <vargaz@freemail.hu>
authorZoltan Varga <vargaz@gmail.com>
Mon, 25 Apr 2005 19:27:27 +0000 (19:27 -0000)
committerZoltan Varga <vargaz@gmail.com>
Mon, 25 Apr 2005 19:27:27 +0000 (19:27 -0000)
* iltests.il: Add test for #74726.

* mini-amd64.c: Fix saving of registers in mul.ovf.un. Fixes #74726.

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

mono/mini/iltests.il
mono/mini/mini-amd64.c

index 3d95f69ae5e0d8dd10382c91d2a0e10d14d60345..6049db71ad4f0769470c4f6fb8d83b4bbd436725 100644 (file)
@@ -725,4 +725,37 @@ COND:   ldloc.0
                ret
        }
 
+       .class public auto ansi Integer
+               extends [mscorlib]System.Object {
+
+               .field public bool n
+
+           .method private hidebysig  specialname  rtspecialname 
+           instance default void .ctor (unsigned int64 i, bool n)  cil managed 
+           {
+                       .maxstack 8
+                       ldarg.0
+                       call instance void class [mscorlib]System.Object::.ctor()
+                       ldarg.0
+                       ldarg.2
+                       stfld bool Tests/Integer::n
+                       ret
+               }
+       }
+
+       .method public static int32 test_1_bug_74726 () {
+               .maxstack 16
+
+               ldc.i4.2
+               conv.ovf.u8
+               ldc.i4.1
+               conv.ovf.u8
+               mul.ovf.un
+               ldc.i4.1
+               newobj instance void class Tests/Integer::.ctor(unsigned int64, bool)
+               ldfld bool Tests/Integer::n
+               ldc.i4.1
+               ceq
+               ret
+       }
 }
index 1d2895e255f308307b1462055aaa4f8773f05188..33b62b712a4ee987bff0b95f85c03ea052b41053 100644 (file)
@@ -3678,7 +3678,7 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                        saved_eax = TRUE;
                                        amd64_push_reg (code, X86_EAX);
                                }
-                       } else if (ins->dreg != X86_EAX) {
+                       } else {
                                saved_edx = TRUE;
                                amd64_push_reg (code, X86_EDX);
                        }