From 3681402bf163a3b5a7b7642f553e87693028649e Mon Sep 17 00:00:00 2001 From: Andrea Corallo Date: Tue, 19 Nov 2019 20:27:27 +0100 Subject: [PATCH] improve dead assignment --- lisp/emacs-lisp/comp.el | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el index b6a3662ec5d..073af957bed 100644 --- a/lisp/emacs-lisp/comp.el +++ b/lisp/emacs-lisp/comp.el @@ -1684,13 +1684,14 @@ Return t if something was changed." "Collect the mvar unique identifiers into INSN." (cl-loop for x in insn if (consp x) - append (comp-collect-mvar-ids x) + append (comp-collect-mvar-ids x) else - when (comp-mvar-p x) - collect (comp-mvar-id x))) + when (comp-mvar-p x) + collect (comp-mvar-id x))) (defun comp-dead-assignments-func () - "Clean-up dead assignments into current function." + "Clean-up trivial dead assignments into current function. +Return the list of m-var ids nuked." (let ((l-vals ()) (r-vals ())) ;; Collect used r and l values. @@ -1725,7 +1726,8 @@ Return t if something was changed." (if (comp-limple-insn-call-p rest) rest `(comment ,(format "optimized out: %s" - insn))))))))) + insn)))))) + nuke-list))) (defun comp-remove-type-hints-func () "Remove type hints from the current function. @@ -1744,7 +1746,11 @@ These are substituted with normals 'set'." (when (>= comp-speed 2) (maphash (lambda (_ f) (let ((comp-func f)) - (comp-dead-assignments-func) + (cl-loop + for i from 1 + while (comp-dead-assignments-func) + finally (comp-log (format "dead code rm run %d times\n" i) 2) + (comp-log-func comp-func 3)) (comp-remove-type-hints-func) (comp-log-func comp-func 3))) (comp-ctxt-funcs-h comp-ctxt)))) -- 2.39.5