From: Andrea Corallo Date: Sun, 27 Oct 2019 09:24:03 +0000 (+0100) Subject: better comp-limplify-block X-Git-Tag: emacs-28.0.90~2727^2~1057 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=67ac8603eaa5618622d746f4097a0ba6ca2f76b3;p=emacs.git better comp-limplify-block do not non fall through blocks --- diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el index b02f846eb9b..858a49b2809 100644 --- a/lisp/emacs-lisp/comp.el +++ b/lisp/emacs-lisp/comp.el @@ -1079,21 +1079,18 @@ The block name is returned." (comp-func-lap comp-func)) for inst = (car inst-cell) for next-inst = (car-safe (cdr inst-cell)) - for fall-through = (comp-lap-fall-through-p inst) do (comp-limplify-lap-inst inst) (cl-incf (comp-limplify-pc comp-pass)) - (pcase next-inst + when (comp-lap-fall-through-p inst) + do (pcase next-inst (`(TAG ,_label . ,label-sp) - (when (and label-sp fall-through) + (when label-sp (cl-assert (= (1- label-sp) (comp-sp)))) (let* ((stack-depth (if label-sp (1- label-sp) - (if fall-through - (comp-sp) - (error "Unknown stack depth.")))) - (next-bb (comp-add-pending-block stack-depth))) - (when (and fall-through - (not (comp-block-closed bb))) + (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)))