compiler/sparc/arith: Fix SCs for FAST-EQL{,-C}/FIXNUM.
authorAlastair Bridgewater <nyef@kana.lisphacker.com>
Thu, 8 Nov 2012 23:18:28 +0000 (18:18 -0500)
committerAlastair Bridgewater <nyef@kana.lisphacker.com>
Thu, 8 Nov 2012 23:18:28 +0000 (18:18 -0500)
  * There's a KLUDGE in build-order.lisp-expr wherein failures
when building this file are ignored.

  * The failures are specifically an SC vs. arg-type mismatch for
the FAST-EQL/FIXNUM and FAST-EQL-C/FIXNUM VOPs.

  * Fix the mismatch by altering the VOP definitions to match what
the MIPS backend uses (since it doesn't have the failure).

  * And remove SPARC from the reader conditional on the KLUDGE.

build-order.lisp-expr
src/compiler/sparc/arith.lisp

index af5c472..8b58ee1 100644 (file)
   ;; x compilation, for now we blithely ignore them and press on to more
   ;; x pressing problems. Someday, though, it would be nice to figure out
   ;; x what the problem is and fix it.
-  #!+(or ppc sparc) :ignore-failure-p)
+  #!+(or ppc) :ignore-failure-p)
  ("src/code/cross-modular"  :not-target)
  ("src/compiler/target/subprim")
 
index cc3d6b0..b190cba 100644 (file)
 ;;;
 
 (define-vop (fast-eql/fixnum fast-conditional)
-  (:args (x :scs (any-reg descriptor-reg zero))
+  (:args (x :scs (any-reg zero))
          (y :scs (any-reg zero)))
   (:arg-types tagged-num tagged-num)
   (:note "inline fixnum comparison")
     (inst nop)))
 ;;;
 (define-vop (generic-eql/fixnum fast-eql/fixnum)
+  (:args (x :scs (any-reg descriptor-reg))
+         (y :scs (any-reg)))
   (:arg-types * tagged-num)
   (:variant-cost 7))
 
 (define-vop (fast-eql-c/fixnum fast-conditional/fixnum)
-  (:args (x :scs (any-reg descriptor-reg zero)))
+  (:args (x :scs (any-reg zero)))
   (:arg-types tagged-num (:constant (signed-byte 11)))
   (:info target not-p y)
   (:translate eql)
     (inst nop)))
 ;;;
 (define-vop (generic-eql-c/fixnum fast-eql-c/fixnum)
+  (:args (x :scs (any-reg descriptor-reg)))
   (:arg-types * (:constant (signed-byte 11)))
   (:variant-cost 6))