Author: zoltan
Date: 2007-01-25 09:56:27 -0500 (Thu, 25 Jan 2007)
New Revision: 71667
Modified:
trunk/mono/mono/mini/ChangeLog
trunk/mono/mono/mini/mini-x86.c
Log:
2007-01-25 Zoltan Varga <[EMAIL PROTECTED]>
* mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
Modified: trunk/mono/mono/mini/ChangeLog
===================================================================
--- trunk/mono/mono/mini/ChangeLog 2007-01-25 14:44:45 UTC (rev 71666)
+++ trunk/mono/mono/mini/ChangeLog 2007-01-25 14:56:27 UTC (rev 71667)
@@ -1,5 +1,7 @@
2007-01-25 Zoltan Varga <[EMAIL PROTECTED]>
+ * mini-x86.c (mono_arch_output_basic_block): Fix #80507 for x86.
+
* mini-amd64.c (mono_arch_output_basic_block): Fix #80507 for amd64.
* iltests.il: Add new test for bug #80507.
Modified: trunk/mono/mono/mini/mini-x86.c
===================================================================
--- trunk/mono/mono/mini/mini-x86.c 2007-01-25 14:44:45 UTC (rev 71666)
+++ trunk/mono/mono/mini/mini-x86.c 2007-01-25 14:56:27 UTC (rev 71667)
@@ -3022,7 +3022,18 @@
case OP_FBGT:
case OP_FBGT_UN:
if (cfg->opt & MONO_OPT_FCMOV) {
- EMIT_COND_BRANCH (ins, X86_CC_LT, FALSE);
+ if (ins->opcode == OP_FBGT) {
+ guchar *br1;
+
+ /* skip branch if C1=1 */
+ br1 = code;
+ x86_branch8 (code, X86_CC_P, 0, FALSE);
+ /* branch if (C0 | C3) = 1 */
+ EMIT_COND_BRANCH (ins, X86_CC_LT,
FALSE);
+ x86_patch (br1, code);
+ } else {
+ EMIT_COND_BRANCH (ins, X86_CC_LT,
FALSE);
+ }
break;
}
x86_alu_reg_imm (code, X86_CMP, X86_EAX, X86_FP_C0);
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches