diff options
author | Zoltan Varga <vargaz@gmail.com> | 2009-03-11 17:29:38 +0300 |
---|---|---|
committer | Zoltan Varga <vargaz@gmail.com> | 2009-03-11 17:29:38 +0300 |
commit | 8f4c7c9e1aaf6568410e2a6db68ee807204b95e7 (patch) | |
tree | a1bca120d8840910849f6af0c30ed84e5032c94e | |
parent | 950b5dc41b6dd0eb6843c60bcde0e9d2e199b4f6 (diff) |
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.
svn path=/branches/mono-2-4/mono/; revision=129066
-rw-r--r-- | mono/mini/ChangeLog | 6 | ||||
-rw-r--r-- | mono/mini/basic.cs | 5 | ||||
-rw-r--r-- | mono/mini/mini-amd64.c | 5 |
3 files changed, 16 insertions, 0 deletions
diff --git a/mono/mini/ChangeLog b/mono/mini/ChangeLog index 6da4d40852e..6fba49dda13 100644 --- a/mono/mini/ChangeLog +++ b/mono/mini/ChangeLog @@ -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-11 Mark Probst <mark.probst@gmail.com> * mini-x86.c (mono_arch_output_basic_block): Use different diff --git a/mono/mini/basic.cs b/mono/mini/basic.cs index ecbef60b697..74d1ede1fad 100644 --- a/mono/mini/basic.cs +++ b/mono/mini/basic.cs @@ -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; diff --git a/mono/mini/mini-amd64.c b/mono/mini/mini-amd64.c index 7ce4b2e762e..10ff67c40a2 100644 --- a/mono/mini/mini-amd64.c +++ b/mono/mini/mini-amd64.c @@ -3059,6 +3059,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 */ |