From: Nikodemus Siivola Date: Wed, 3 Jun 2009 15:56:32 +0000 (+0000) Subject: 1.0.28.76: fix non-unicode builds on x86 and x86-64 X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=91ee7afd75d8b282829daa647d0a8f1469336a77;hp=0f275066654d7412ede836567fb5423c9ddc957d;p=sbcl.git 1.0.28.76: fix non-unicode builds on x86 and x86-64 * The problem has been there since 1.0.24.35, but possibly exposed only recently: MOVE-IF/CHAR cannot use byte-sized registers since CMOV cannot. Hence disable if for non-unicode builds. Reported by Stas Boukarev. * Missing news entry from 1.0.28.75. --- diff --git a/NEWS b/NEWS index c794c3a..42ccd73 100644 --- a/NEWS +++ b/NEWS @@ -89,6 +89,8 @@ * bug fix: signals delivered to threads started from foreign land (read: directly by pthread_create, not by MAKE-THREAD) are redirected to a Lisp thread by blocking all signals and resignalling. + * bug fix: SHARED-INITIALIZE initialized unbound :ALLOCATION :CLASS slots + from :INITFORM, if any. changes in sbcl-1.0.28 relative to 1.0.27: * a number of bugs in cross-compilation have been fixed, with the ultimate diff --git a/src/compiler/x86-64/pred.lisp b/src/compiler/x86-64/pred.lisp index e1f08e0..8c9b2fd 100644 --- a/src/compiler/x86-64/pred.lisp +++ b/src/compiler/x86-64/pred.lisp @@ -78,6 +78,10 @@ ((unsigned-byte-64 unsigned-byte-63) unsigned-reg move-if/unsigned) (signed-byte-64 signed-reg move-if/signed) + ;; FIXME: Can't use CMOV with byte registers, and characters live + ;; in such outside of unicode builds. A better solution then just + ;; disabling MOVE-IF/CHAR should be possible, though. + #!+sb-unicode (character character-reg move-if/char) ((single-float complex-single-float @@ -198,6 +202,8 @@ unsigned-num unsigned-reg unsigned-stack) (def-move-if move-if/signed signed-num signed-reg signed-stack) + ;; FIXME: See *CMOV-PTYPE-REPRESENTATION-VOP* above. + #!+sb-unicode (def-move-if move-if/char character character-reg character-stack) (def-move-if move-if/sap diff --git a/src/compiler/x86/pred.lisp b/src/compiler/x86/pred.lisp index f7bb241..da77d6f 100644 --- a/src/compiler/x86/pred.lisp +++ b/src/compiler/x86/pred.lisp @@ -65,6 +65,10 @@ ((unsigned-byte-32 unsigned-byte-31) unsigned-reg move-if/unsigned) (signed-byte-32 signed-reg move-if/signed) + ;; FIXME: Can't use CMOV with byte registers, and characters live + ;; in such outside of unicode builds. A better solution then just + ;; disabling MOVE-IF/CHAR should be possible, though. + #!+sb-unicode (character character-reg move-if/char) ((single-float complex-single-float @@ -151,6 +155,8 @@ (def-move-if move-if/fx tagged-num any-reg control-stack) (def-move-if move-if/unsigned unsigned-num unsigned-reg unsigned-stack) (def-move-if move-if/signed signed-num signed-reg signed-stack) + ;; FIXME: See *CMOV-PTYPE-REPRESENTATION-VOP* above. + #!+sb-unicode (def-move-if move-if/char character character-reg character-stack) (def-move-if move-if/sap system-area-pointer sap-reg sap-stack)) diff --git a/version.lisp-expr b/version.lisp-expr index d71f4c0..aef0c48 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -17,4 +17,4 @@ ;;; checkins which aren't released. (And occasionally for internal ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"1.0.28.75" +"1.0.28.76"