Index: /trunk/source/compiler/X86/x862.lisp
===================================================================
--- /trunk/source/compiler/X86/x862.lisp	(revision 15058)
+++ /trunk/source/compiler/X86/x862.lisp	(revision 15059)
@@ -7292,5 +7292,7 @@
            (otherform (when fiximm (if fix1 form2 form1)))
            (out-of-line (backend-get-next-label))
-           (done (backend-get-next-label)))
+           (done (backend-get-next-label))
+           (continue (backend-get-next-label)))
+        
       (if otherform
         (x862-one-targeted-reg-form seg otherform ($ *x862-arg-y*))
@@ -7313,8 +7315,11 @@
           (unless (or (and fix2 (not fix1)) (eq cr-bit x86::x86-e-bits))
             (setq cr-bit (x862-reverse-cr-bit cr-bit))))
-        (if (not true-p)
-          (setq cr-bit (logxor 1 cr-bit)))
-        (! cr-bit->boolean ($ *x862-arg-z*) cr-bit)
-        (-> done)
+        (if (and vreg (eq (hard-regspec-class vreg) hard-reg-class-crf))
+          (x862-branch seg (x862-cd-merge xfer continue) cr-bit true-p)
+          (progn
+            (if (not true-p)
+              (setq cr-bit (logxor 1 cr-bit)))
+            (! cr-bit->boolean ($ *x862-arg-z*) cr-bit)
+            (-> done)))
         (@ out-of-line)
         (when otherform
@@ -7327,5 +7332,6 @@
         (@ done)
         (<- ($ *x862-arg-z*))
-        (^)))))
+        (^)
+        (@ continue)))))
          
         
