- (let* ((lvar what)
- (uses (lvar-uses lvar)))
- (if (every (lambda (use)
- (and (combination-p use)
- (eq (basic-combination-kind use) :known)
- (awhen (fun-info-stack-allocate-result
- (basic-combination-fun-info use))
- (funcall it use))))
- (if (listp uses) uses (list uses)))
- (real-dx-lvars lvar)
- (setf (lvar-dynamic-extent lvar) nil))))
+ (if (lvar-good-for-dx-p what t component)
+ (let ((real (principal-lvar what)))
+ (setf (lvar-dynamic-extent real) cleanup)
+ (real-dx-lvars real))
+ (setf (lvar-dynamic-extent what) nil)))