From: Andrea Corallo Date: Sun, 27 Oct 2019 15:57:29 +0000 (+0100) Subject: Revert "simplify comp-limplify-block" X-Git-Tag: emacs-28.0.90~2727^2~1053 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=283b0db31c87a8bed736a8459ab16ae066ceb024;p=emacs.git Revert "simplify comp-limplify-block" This reverts commit 31861f63a4b57e69cdcd247e48567242a05bd58e. --- diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el index 7b77b4d87c9..1891398c149 100644 --- a/lisp/emacs-lisp/comp.el +++ b/lisp/emacs-lisp/comp.el @@ -1075,10 +1075,24 @@ The block name is returned." (setf (comp-limplify-pc comp-pass) (comp-block-addr bb)) (puthash (comp-block-name bb) bb (comp-func-blocks comp-func)) (cl-loop - for inst in (nthcdr (comp-limplify-pc comp-pass) + for inst-cell on (nthcdr (comp-limplify-pc comp-pass) (comp-func-lap comp-func)) + for inst = (car inst-cell) + for next-inst = (car-safe (cdr inst-cell)) do (comp-limplify-lap-inst inst) (cl-incf (comp-limplify-pc comp-pass)) + when (comp-lap-fall-through-p inst) + do (pcase next-inst + (`(TAG ,_label . ,label-sp) + (when label-sp + (cl-assert (= (1- label-sp) (comp-sp)))) + (let* ((stack-depth (if label-sp + (1- label-sp) + (comp-sp))) + (next-bb (comp-add-pending-block stack-depth))) + (unless (comp-block-closed bb) + (comp-emit `(jump ,next-bb)))) + (cl-return))) until (comp-lap-eob-p inst))) (defun comp-limplify-function (func)