2009-10-29 Zoltan Varga <vargaz@gmail.com>
authorZoltan Varga <vargaz@gmail.com>
Thu, 29 Oct 2009 13:08:26 +0000 (13:08 -0000)
committerZoltan Varga <vargaz@gmail.com>
Thu, 29 Oct 2009 13:08:26 +0000 (13:08 -0000)
* mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.

* basic.cs: Add a test.

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

mono/mini/ChangeLog
mono/mini/basic.cs
mono/mini/mini-x86.c

index 08aa706797ce93786f2e177647c0be449ea66294..6646f37220f66541471a215b406b84f50a8b47a7 100644 (file)
@@ -1,5 +1,9 @@
 2009-10-29  Zoltan Varga  <vargaz@gmail.com>
 
+       * mini-x86.c (mono_arch_output_basic_block): Fix % 1. Fixes #550970.
+
+       * basic.cs: Add a test.
+
        * method-to-ir.c (mono_method_to_ir): Use EMIT_NEW_LOAD_MEMBASE_TYPE to
        load vtypes instead if OP_LOADV_MEMBASE in the implementation of
        CONSTRAINED. Fixes #550964.
index a04aff87611234f31671802e17e9153093d089c0..eeb564bbd809a0290f601f0c5cc8a5342f8965f2 100644 (file)
@@ -195,6 +195,11 @@ class Tests {
                return b % 1;
        }
 
+       public static int test_0_rem_imm_0_neg () {
+               int b = -2;
+               return b % 1;
+       }
+
        public static int test_4_rem_big_imm () {
                int b = 10004;
                return b % 10000;
index c5eeb32d933d4ec93fd6aa3489f3c4dcb7e6a53f..3116bd69d8f98dff995a3469ae81ee9ef20b97d9 100644 (file)
@@ -2434,6 +2434,8 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                                 */
                                x86_alu_reg_reg (code, X86_XOR, X86_EAX, X86_EDX);
                                x86_alu_reg_reg (code, X86_SUB, X86_EAX, X86_EDX);
+                       } else if (power == 0) {
+                               x86_alu_reg_reg (code, X86_XOR, ins->dreg, ins->dreg);
                        } else {
                                /* Based on gcc code */