Changeset 7437 for branches/working-0710


Ignore:
Timestamp:
Oct 14, 2007, 12:12:10 AM (12 years ago)
Author:
gb
Message:

constant comparisons fix again

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/working-0710/ccl/compiler/X86/x862.lisp

    r7288 r7437  
    32863286                (! compare-reg-to-zero reg)
    32873287                (! compare-s32-constant reg (or js32 is32)))
    3288               (unless (or js32 (eq cr-bit x86::x86-e-bits))
     3288              (unless (or (and js32 (not is32)) (eq cr-bit x86::x86-e-bits))
    32893289                (setq cr-bit (x862-reverse-cr-bit cr-bit)))
    32903290              (^ cr-bit true-p))
     
    61276127            (x862-explicit-non-fixnum-type-p form2))
    61286128      (x862-binary-builtin seg vreg xfer name form1 form2)
    6129       (x862-inline-numcmp seg vreg xfer cc name form1 form2))))
     6129      (let* ((fix1 (acode-fixnum-form-p form1))
     6130             (fix2 (acode-fixnum-form-p form2)))
     6131        (if (and fix1 fix2)
     6132          (if (funcall name fix1 fix2)
     6133            (x862-t seg vreg xfer)
     6134            (x862-nil seg vreg xfer))
     6135          (x862-inline-numcmp seg vreg xfer cc name form1 form2))))))
    61306136
    61316137(defun x862-inline-numcmp (seg vreg xfer cc name form1 form2)
     
    61576163      (multiple-value-bind (cr-bit true-p) (acode-condition-to-x86-cr-bit cc)
    61586164        (when otherform
    6159           (unless (or fix2 (eq cr-bit x86::x86-e-bits))
     6165          (unless (or (and fix2 (not fix1)) (eq cr-bit x86::x86-e-bits))
    61606166            (setq cr-bit (x862-reverse-cr-bit cr-bit))))
    61616167        (if (not true-p)
Note: See TracChangeset for help on using the changeset viewer.