second nested one. A trivial fix is to call CHANGE-REF-LEAF in known
call for functions already inline converted there, but he is not sure
if this has adverse effects elsewhere.
+
+427: ANY-REG not good for primitive type T
+
+ ...which is true, of course, but the following should not complain
+ about it (on x86 and x86-64):
+
+ (sb-alien:with-alien ((buf (array (sb-alien:signed 8) 16))))
+
+ reported by Stelian Ionescu on sbcl-devel.
+
in normal SPEED policies.
* bug fix: result of MAKE-ARRAY can be stack allocated - regression
since 1.0.15.36. (thanks to Paul Khuong)
- * 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
(/show0 "primtype.lisp 17")
-(!def-primitive-type t (descriptor-reg #!+(or x86 x86-64) any-reg))
+(!def-primitive-type t (descriptor-reg))
(/show0 "primtype.lisp 20")
(setf *backend-t-primitive-type* (primitive-type-or-lose t))
(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
(the ,type x)))))
(compile nil (make-lambda 'list))
(compile nil (make-lambda 'vector))))))
+
+;;; this caused a momentary regression when an ill-adviced fix to
+;;; bug 427 made ANY-REG suitable for primitive-type T:
+;;;
+;;; no :MOVE-ARG VOP defined to move #<SB-C:TN t1> (SC SB-VM::SINGLE-REG) to #<SB-C:TN t2> (SC SB-VM::ANY-REG)
+;;; [Condition of type SIMPLE-ERROR]
+(compile nil
+ '(lambda (frob)
+ (labels
+ ((%zig (frob)
+ (typecase frob
+ (double-float
+ (setf (sb-alien:deref (sb-alien:cast (sb-alien:sap-alien (unknown1) (* unsigned-char))
+ (* double-float))) frob))
+ (hash-table
+ (%zig (the (values (single-float (0.0) 1.0) &optional) (unknown2)))
+ nil))))
+ (%zig))))
;;; 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.31"
+"1.0.16.32"