X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fphysenvanal.lisp;h=835c7c5d748edc2aa8af791e9803fa3298b3d288;hb=c1aa8b6b5b870f21bc8c81da85708e9d71d4eb93;hp=af8fec3ab540e938c96f40f1c30a179ef10eae08;hpb=975f1932acc3a8e90fb31d2b055bfbdde78ea927;p=sbcl.git diff --git a/src/compiler/physenvanal.lisp b/src/compiler/physenvanal.lisp index af8fec3..835c7c5 100644 --- a/src/compiler/physenvanal.lisp +++ b/src/compiler/physenvanal.lisp @@ -334,17 +334,12 @@ (loop for what in (cleanup-info cleanup) do (etypecase what (lvar - (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 (let ((uses (lvar-uses what))) + (if (listp uses) + (every #'use-good-for-dx-p uses) + (use-good-for-dx-p uses))) + (real-dx-lvars what) + (setf (lvar-dynamic-extent what) nil))) (node ; DX closure (let* ((call what) (arg (first (basic-combination-args call)))