From 06cc46735ebc73618995281f26fcce096c1110f6 Mon Sep 17 00:00:00 2001 From: Alastair Bridgewater Date: Thu, 8 Nov 2012 18:18:28 -0500 Subject: [PATCH] compiler/sparc/arith: Fix SCs for FAST-EQL{,-C}/FIXNUM. * 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 | 2 +- src/compiler/sparc/arith.lisp | 7 +++++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/build-order.lisp-expr b/build-order.lisp-expr index af5c472..8b58ee1 100644 --- a/build-order.lisp-expr +++ b/build-order.lisp-expr @@ -573,7 +573,7 @@ ;; 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") diff --git a/src/compiler/sparc/arith.lisp b/src/compiler/sparc/arith.lisp index cc3d6b0..b190cba 100644 --- a/src/compiler/sparc/arith.lisp +++ b/src/compiler/sparc/arith.lisp @@ -780,7 +780,7 @@ ;;; (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") @@ -791,11 +791,13 @@ (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) @@ -805,6 +807,7 @@ (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)) -- 1.7.10.4