;; live over the dynamic contour of the physenv.
(setf (tn-sc res) (svref *backend-sc-numbers*
sb!vm:control-stack-sc-number))
- ;; KLUDGE: In the case of a tail-local-call, the entire
- ;; stack frame is overwritten by the physenv of the called
- ;; function. Unfortunately, the tail-call appears to end
- ;; the dynamic contour of the physenv, meaning that the
- ;; stack slot occupied by the LAMBDA-VAR may be reassigned.
- ;; Ideally, we might make the TN physenv-live across the
- ;; physenvs of the tail-set of the lambda, but as a stopgap
- ;; we can make it component-live instead.
- (component-live-tn res)
- #+(or)
(physenv-live-tn res (lambda-physenv fun)))
(debug-variable-p
(sum-d 15))))
233168)))
(assert (>= (* 10 (1+ time-2/simple)) time-2/hairy)))))
+
+(with-test (:name :regression-1.0.44.34)
+ (compile nil '(lambda (z &rest args)
+ (declare (dynamic-extent args))
+ (flet ((foo (w v) (list v w)))
+ (setq z 0)
+ (flet ((foo ()
+ (foo z args)))
+ (declare (sb-int:truly-dynamic-extent #'foo))
+ (call #'foo nil))))))
;;; 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.45.3"
+"1.0.45.4"