X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcompiler%2Fphysenvanal.lisp;h=ec527cf978ac63cfbabeffde3e468d5b0ca80423;hb=c593dc26733b179db6c12c7085ed76b762ac256b;hp=592c0023f7531f8281a64382f2f31564de64971b;hpb=757091b10a73a7f6e2bd673bcf990ac93f23f77c;p=sbcl.git diff --git a/src/compiler/physenvanal.lisp b/src/compiler/physenvanal.lisp index 592c002..ec527cf 100644 --- a/src/compiler/physenvanal.lisp +++ b/src/compiler/physenvanal.lisp @@ -335,11 +335,13 @@ do (etypecase what (cons (let ((lvar (cdr what))) - (if (lvar-good-for-dx-p lvar (car what) component) - (let ((real (principal-lvar lvar))) - (setf (lvar-dynamic-extent real) cleanup) - (real-dx-lvars real)) - (setf (lvar-dynamic-extent lvar) nil)))) + (cond ((lvar-good-for-dx-p lvar (car what) component) + (let ((real (principal-lvar lvar))) + (setf (lvar-dynamic-extent real) cleanup) + (real-dx-lvars real))) + (t + (note-no-stack-allocation lvar) + (setf (lvar-dynamic-extent lvar) nil))))) (node ; DX closure (let* ((call what) (arg (first (basic-combination-args call)))