diff options
| -rw-r--r-- | lisp/emacs-lisp/byte-opt.el | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/lisp/emacs-lisp/byte-opt.el b/lisp/emacs-lisp/byte-opt.el index 38f5dcc993b..f3cc3d5992e 100644 --- a/lisp/emacs-lisp/byte-opt.el +++ b/lisp/emacs-lisp/byte-opt.el | |||
| @@ -1752,12 +1752,22 @@ If FOR-EFFECT is non-nil, the return value is assumed to be of no importance." | |||
| 1752 | (setcdr tmp2 lap1) | 1752 | (setcdr tmp2 lap1) |
| 1753 | (setq tmp3 (cdr (memq tmp2 tmp3)))) | 1753 | (setq tmp3 (cdr (memq tmp2 tmp3)))) |
| 1754 | (setq lap (delq lap0 lap) | 1754 | (setq lap (delq lap0 lap) |
| 1755 | keep-going t)) | 1755 | keep-going t) |
| 1756 | ;; replace references to tag in jump tables, if any | ||
| 1757 | (dolist (table byte-compile-jump-tables) | ||
| 1758 | (catch 'break | ||
| 1759 | (maphash #'(lambda (value tag) | ||
| 1760 | (when (equal tag lap0) | ||
| 1761 | ;; each tag occurs only once in the jump table | ||
| 1762 | (puthash value lap1 table) | ||
| 1763 | (throw 'break nil))) | ||
| 1764 | table)))) | ||
| 1756 | ;; | 1765 | ;; |
| 1757 | ;; unused-TAG: --> <deleted> | 1766 | ;; unused-TAG: --> <deleted> |
| 1758 | ;; | 1767 | ;; |
| 1759 | ((and (eq 'TAG (car lap0)) | 1768 | ((and (eq 'TAG (car lap0)) |
| 1760 | (not (rassq lap0 lap)) | 1769 | (not (rassq lap0 lap)) |
| 1770 | ;; make sure this tag isn't used in a jump-table | ||
| 1761 | (cl-loop for table in byte-compile-jump-tables | 1771 | (cl-loop for table in byte-compile-jump-tables |
| 1762 | when (member lap0 (hash-table-values table)) | 1772 | when (member lap0 (hash-table-values table)) |
| 1763 | return nil finally return t)) | 1773 | return nil finally return t)) |