1.0.16.11: ANY-REG is good for pritimitive-type T on x86/x86-64
authorNikodemus Siivola <nikodemus@random-state.net>
Thu, 24 Apr 2008 08:36:11 +0000 (08:36 +0000)
committerNikodemus Siivola <nikodemus@random-state.net>
Thu, 24 Apr 2008 08:36:11 +0000 (08:36 +0000)
 * Report and test case by Stelian Ionescu.

NEWS
src/compiler/generic/primtype.lisp
tests/alien.impure.lisp
version.lisp-expr

diff --git a/NEWS b/NEWS
index f1da9d7..c1bef9e 100644 (file)
--- 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
index 2ee50b0..561114c 100644 (file)
@@ -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))
 
index d1ee3e3..c85ee8e 100644 (file)
          (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
index 200ad40..8fff13c 100644 (file)
@@ -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"