From 331703c22a1b5993f29d0218baaf1e04dd2ecefa Mon Sep 17 00:00:00 2001 From: Zoltan Varga Date: Thu, 29 Oct 2009 13:08:26 +0000 Subject: [PATCH] 2009-10-29 Zoltan Varga * 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 | 4 ++++ mono/mini/basic.cs | 5 +++++ mono/mini/mini-x86.c | 2 ++ 3 files changed, 11 insertions(+) diff --git a/mono/mini/ChangeLog b/mono/mini/ChangeLog index 08aa706797c..6646f37220f 100644 --- a/mono/mini/ChangeLog +++ b/mono/mini/ChangeLog @@ -1,5 +1,9 @@ 2009-10-29 Zoltan Varga + * 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. diff --git a/mono/mini/basic.cs b/mono/mini/basic.cs index a04aff87611..eeb564bbd80 100644 --- a/mono/mini/basic.cs +++ b/mono/mini/basic.cs @@ -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; diff --git a/mono/mini/mini-x86.c b/mono/mini/mini-x86.c index c5eeb32d933..3116bd69d8f 100644 --- a/mono/mini/mini-x86.c +++ b/mono/mini/mini-x86.c @@ -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 */ -- 2.25.1