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

Reply via email to