]> git.eshelyaron.com Git - emacs.git/commitdiff
fix ssa renaming
authorAndrea Corallo <akrl@sdf.org>
Sun, 15 Sep 2019 08:50:33 +0000 (10:50 +0200)
committerAndrea Corallo <akrl@sdf.org>
Wed, 1 Jan 2020 10:37:48 +0000 (11:37 +0100)
lisp/emacs-lisp/comp.el

index 08a6d59ff9cac7f123cb0fb466e169da9fe0609e..0ad8b1a310a1ce08375460c1680c3ca8238d8573 100644 (file)
@@ -1169,13 +1169,13 @@ PRE-LAMBDA and POST-LAMBDA are called in pre or post-order if non nil."
                 (setf (cadr insn) mvar))))
     (pcase insn
       (`(,(pred comp-assign-op-p) ,(pred target-p) . ,_)
-       (new-lvalue))
-      (`(phi . ,_)
-       (new-lvalue))
+       (cl-nsubst-if (new-lvalue) #'target-p (cddr insn)))
+      (`(phi  ,n)
+       (when (equal n slot-n)
+         (new-lvalue)))
       (_
        (let ((mvar (aref (comp-ssa-frame comp-pass) slot-n)))
-         ;; Should we have to recur for nested args?
-         (cl-nsubstitute-if mvar #'target-p (cdr insn)))))))
+         (cl-nsubst-if mvar #'target-p (cdr insn)))))))
 
 (defun comp-ssa-rename-in-blocks (n)
   "Given slot number N rename in the blocks."