X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fmacros.lisp;h=e96a92bf134a903658a0a07ef2828f00a18e595a;hb=d131dfb49a3e6522d2358d14252f3f52cfcd202a;hp=04dc8a90f0b2f1bb533d0f962cc357c54f48ae9c;hpb=61c18727668ff0c3263a3d363e609d4522d545cc;p=sbcl.git diff --git a/src/compiler/macros.lisp b/src/compiler/macros.lisp index 04dc8a9..e96a92b 100644 --- a/src/compiler/macros.lisp +++ b/src/compiler/macros.lisp @@ -619,9 +619,10 @@ (ctran-next it)) (t (return))))) ,@(when lvar-var - `((,lvar-var #1=(when (valued-node-p ,node-var) - (node-lvar ,node-var)) - #1#)))) + `((,lvar-var (when (valued-node-p ,node-var) + (node-lvar ,node-var)) + (when (valued-node-p ,node-var) + (node-lvar ,node-var)))))) (nil) ,@body ,@(when restart-p @@ -635,9 +636,10 @@ (n-prev (gensym))) `(loop with ,n-block = ,block for ,node-var = (block-last ,n-block) then (ctran-use ,n-prev) - while ,node-var ; FIXME: this is non-ANSI - for ,n-prev = (node-prev ,node-var) - and ,lvar = (when (valued-node-p ,node-var) (node-lvar ,node-var)) + for ,n-prev = (when ,node-var (node-prev ,node-var)) + and ,lvar = (when (and ,node-var (valued-node-p ,node-var)) + (node-lvar ,node-var)) + while ,node-var do (progn ,@body))))