incremented seemed like the simplest and most conservative
thing to do.)
+changes in sbcl-0.7.9 relative to sbcl-0.7.8:
+ * fixed bug: VALUES-LIST is no longer optimized away
+
planned incompatible changes in 0.7.x:
* When the profiling interface settles down, maybe in 0.7.x, maybe
later, it might impact TRACE. They both encapsulate functions, and
(defoptimizer (values-list ir2-convert) ((list) node block)
(let* ((cont (node-cont node))
(2cont (continuation-info cont)))
- (when 2cont
- (ecase (ir2-continuation-kind 2cont)
- (:fixed (ir2-convert-full-call node block))
- (:unknown
- (let ((locs (ir2-continuation-locs 2cont)))
- (vop* values-list node block
- ((continuation-tn node block list) nil)
- ((reference-tn-list locs t)))))))))
+ (cond ((and 2cont
+ (eq (ir2-continuation-kind 2cont) :unknown))
+ (let ((locs (ir2-continuation-locs 2cont)))
+ (vop* values-list node block
+ ((continuation-tn node block list) nil)
+ ((reference-tn-list locs t)))))
+ (t (aver (or (not 2cont) ; i.e. we want to check the argument
+ (eq (ir2-continuation-kind 2cont) :fixed)))
+ (ir2-convert-full-call node block)))))
(defoptimizer (%more-arg-values ir2-convert) ((context start count) node block)
(let* ((cont (node-cont node))
(assert (not (eval `(locally (declare (optimize (safety 0)))
(ignore-errors (progn ,form t)))))))
-(dolist (form '(#+nil(values-list '(1 . 2)) ; This case still fails
+(dolist (form '((values-list (car (list '(1 . 2))))
(fboundp '(set bet))
(atan #c(1 1) (car (list #c(2 2))))
(nthcdr (car (list (floor (cos 3)))) '(1 2 3 4 5))