X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fir1util.lisp;h=19e0adb3e8502e6806853b3e5c23b3045dae511b;hb=091f0c20d4661994be7be4cc707c2aba4ef86418;hp=d79da6b2422b77d12fdff3d03c4f3c316acd5be3;hpb=09ba205d5ff72b9f4b1ffcf8743809c01a9c69e5;p=sbcl.git diff --git a/src/compiler/ir1util.lisp b/src/compiler/ir1util.lisp index d79da6b..19e0adb 100644 --- a/src/compiler/ir1util.lisp +++ b/src/compiler/ir1util.lisp @@ -1637,7 +1637,8 @@ is :ANY, the function name is not checked." (all (combination-args call)) (new-args (reverse (subseq all 0 n-positional))) (key-args (subseq all n-positional)) - (parameters nil)) + (parameters nil) + (flushed-keys nil)) (loop while key-args do (let* ((key (pop key-args)) (val (pop key-args)) @@ -1647,10 +1648,12 @@ is :ANY, the function name is not checked." (spec (or (assoc keyword specs :test #'eq) (give-up-ir1-transform)))) (push val new-args) - (flush-dest key) + (push key flushed-keys) (push (second spec) parameters) ;; In case of duplicate keys. (setf (second spec) (gensym)))) + (dolist (key flushed-keys) + (flush-dest key)) (setf (combination-args call) (reverse new-args)) (reverse parameters)))