From: Nikodemus Siivola Date: Thu, 24 Apr 2008 08:36:11 +0000 (+0000) Subject: 1.0.16.11: ANY-REG is good for pritimitive-type T on x86/x86-64 X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=e602d69296d74060610880680e9381b12a8dd4d3;p=sbcl.git 1.0.16.11: ANY-REG is good for pritimitive-type T on x86/x86-64 * Report and test case by Stelian Ionescu. --- diff --git a/NEWS b/NEWS index f1da9d7..c1bef9e 100644 --- a/NEWS +++ b/NEWS @@ -7,6 +7,9 @@ changes in sbcl-1.0.17 relative to 1.0.16: in normal SPEED policies. * optimization: NCONC no longer needs to heap cons its &REST list in normal SPEED policies. + * bug fix: bogus errors when generating certain code sequences, due + to the compiler not accepting ANY-REG for primitive type T on x86 + and x86-64. (reported by Stelian Ionescu.) * bug fix: LAST when always returned the whole list when given a bignum as the second argument. * bug fix: dynamic extent allocation of nested lists and vectors diff --git a/src/compiler/generic/primtype.lisp b/src/compiler/generic/primtype.lisp index 2ee50b0..561114c 100644 --- a/src/compiler/generic/primtype.lisp +++ b/src/compiler/generic/primtype.lisp @@ -16,7 +16,7 @@ (/show0 "primtype.lisp 17") -(!def-primitive-type t (descriptor-reg)) +(!def-primitive-type t (descriptor-reg #!+(or x86 x86-64) any-reg)) (/show0 "primtype.lisp 20") (setf *backend-t-primitive-type* (primitive-type-or-lose t)) diff --git a/tests/alien.impure.lisp b/tests/alien.impure.lisp index d1ee3e3..c85ee8e 100644 --- a/tests/alien.impure.lisp +++ b/tests/alien.impure.lisp @@ -203,4 +203,8 @@ (error () :ok))))) +;; This used to signal an error on x86 due to primitive type T not having +;; been compatible with ANY-REG. (On x86 and -64 ANY-REG is fine.) +(sb-alien:with-alien ((buf (array (sb-alien:signed 8) 16)))) + ;;; success diff --git a/version.lisp-expr b/version.lisp-expr index 200ad40..8fff13c 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.16.10" +"1.0.16.11"