]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/emacs-lisp/comp.el (comp-fwprop-insn): Fix phi function.
authorAndrea Corallo <akrl@sdf.org>
Sun, 8 Nov 2020 19:45:43 +0000 (20:45 +0100)
committerAndrea Corallo <akrl@sdf.org>
Sun, 8 Nov 2020 20:22:53 +0000 (21:22 +0100)
lisp/emacs-lisp/comp.el

index c837e020603fe6d6ca6b2526464b476855d749fd..887a6a503ec13a069794f0b0952a8b837960d623 100644 (file)
@@ -2289,19 +2289,20 @@ Forward propagate immediate involed in assignments."
      (setf (comp-mvar-const-vld lval) t
            (comp-mvar-constant lval) v
            (comp-mvar-type lval) (comp-strict-type-of v)))
-    (`(phi (,lval . _) . ,rest)
-     ;; Forward const prop here.
-     (when-let* ((vld (cl-every #'comp-mvar-const-vld rest))
-                 (consts (mapcar #'comp-mvar-constant rest))
-                 (x (car consts))
-                 (equals (cl-every (lambda (y) (equal x y)) consts)))
-       (setf (comp-mvar-const-vld lval) t
-             (comp-mvar-constant lval) x))
-     ;; Forward type propagation.
-     (when-let* ((types (mapcar #'comp-mvar-type rest))
-                 (non-empty (cl-notany #'null types))
-                 (x (comp-common-supertype types)))
-       (setf (comp-mvar-type lval) x)))))
+    (`(phi ,lval . ,rest)
+     (let ((rvals (mapcar #'car rest)))
+       ;; Forward const prop here.
+       (when-let* ((vld (cl-every #'comp-mvar-const-vld rvals))
+                   (consts (mapcar #'comp-mvar-constant rvals))
+                   (x (car consts))
+                   (equals (cl-every (lambda (y) (equal x y)) consts)))
+         (setf (comp-mvar-const-vld lval) t
+               (comp-mvar-constant lval) x))
+       ;; Forward type propagation.
+       (when-let* ((types (mapcar #'comp-mvar-type rvals))
+                   (non-empty (cl-notany #'null types))
+                   (x (comp-common-supertype types)))
+         (setf (comp-mvar-type lval) x))))))
 
 (defun comp-fwprop* ()
   "Propagate for set* and phi operands.