Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZoltan Varga <vargaz@gmail.com>2009-03-11 17:29:38 +0300
committerZoltan Varga <vargaz@gmail.com>2009-03-11 17:29:38 +0300
commit8f4c7c9e1aaf6568410e2a6db68ee807204b95e7 (patch)
treea1bca120d8840910849f6af0c30ed84e5032c94e
parent950b5dc41b6dd0eb6843c60bcde0e9d2e199b4f6 (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/ChangeLog6
-rw-r--r--mono/mini/basic.cs5
-rw-r--r--mono/mini/mini-amd64.c5
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 */