2009-03-11 Zoltan Varga <vargaz@gmail.com>
authorZoltan Varga <vargaz@gmail.com>
Wed, 11 Mar 2009 14:30:17 +0000 (14:30 -0000)
committerZoltan Varga <vargaz@gmail.com>
Wed, 11 Mar 2009 14:30:17 +0000 (14:30 -0000)
* mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.

* basic.cs: Add a test.

svn path=/branches/mono-2-2/mono/; revision=129067

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

index c0eba6e44e1919947f7c95802b4db5ebb6b0df34..1e7ea2f98c2ed384394301806a0753ac51219eee 100644 (file)
@@ -1,3 +1,9 @@
+2009-03-11  Zoltan Varga  <vargaz@gmail.com>
+
+       * mini-amd64.c (mono_arch_output_basic_block): Fix % 1. Fixes #484323.
+
+       * basic.cs: Add a test.
+
 2009-03-06  Zoltan Varga  <vargaz@gmail.com>
 
        Backport of r128749.
index ecbef60b697f76fdaeaeb7af261fb7b56d4faa01..74d1ede1fad72f11ac21e1b961f698dae738bf77 100644 (file)
@@ -190,6 +190,11 @@ class Tests {
                return b % 8;
        }
 
+       public static int test_0_rem_imm_0 () {
+               int b = 12;
+               return b % 1;
+       }
+
        public static int test_4_rem_big_imm () {
                int b = 10004;
                return b % 10000;
index 2fce596800d2e029dd492be29094274c5fa2abac..b33714554e12e8b7f4837f7a2ac08bc97728e433 100644 (file)
@@ -3519,6 +3519,11 @@ mono_arch_output_basic_block (MonoCompile *cfg, MonoBasicBlock *bb)
                        g_assert (ins->dreg == X86_EAX);
                        g_assert (power >= 0);
 
+                       if (power == 0) {
+                               amd64_mov_reg_imm (code, ins->dreg, 0);
+                               break;
+                       }
+
                        /* Based on gcc code */
 
                        /* Add compensation for negative dividents */