diff options
author | Mattias EngdegÄrd <mattiase@acm.org> | 2023-01-17 17:57:25 +0100 |
---|---|---|
committer | Mattias EngdegÄrd <mattiase@acm.org> | 2023-01-27 17:27:15 +0100 |
commit | 627ac228b2ecdf179f36ea41fd0254c091744e4b (patch) | |
tree | a0edd595805a2d8a181eab2c0e58cfa480ba3bdf /lisp/emacs-lisp/byte-opt.el | |
parent | 18fbcce9757165689df109db8f7b528a57335ae2 (diff) | |
download | emacs-627ac228b2ecdf179f36ea41fd0254c091744e4b.tar.gz emacs-627ac228b2ecdf179f36ea41fd0254c091744e4b.tar.bz2 emacs-627ac228b2ecdf179f36ea41fd0254c091744e4b.zip |
Don't inhibit LAP-level DCE when switch ops are present
* lisp/emacs-lisp/byte-opt.el (byte-optimize-lapcode):
Allow removal of unreachable basic blocks in the LAP peephole
optimiser even when switch ops are present. The origins of
this apparently unnecessary condition are unclear.
Diffstat (limited to 'lisp/emacs-lisp/byte-opt.el')
-rw-r--r-- | lisp/emacs-lisp/byte-opt.el | 10 |
1 files changed, 2 insertions, 8 deletions
diff --git a/lisp/emacs-lisp/byte-opt.el b/lisp/emacs-lisp/byte-opt.el index 039cebedb44..b1a46d520e6 100644 --- a/lisp/emacs-lisp/byte-opt.el +++ b/lisp/emacs-lisp/byte-opt.el @@ -2227,18 +2227,12 @@ If FOR-EFFECT is non-nil, the return value is assumed to be of no importance." ;; ;; goto ... --> goto <delete until TAG or end> ;; return ... --> return <delete until TAG or end> - ;; (unless a jump-table is being used, where deleting may affect - ;; other valid case bodies) ;; ((and (memq (car lap0) '(byte-goto byte-return)) - (not (memq (car lap1) '(TAG nil))) - ;; FIXME: Instead of deferring simply when jump-tables are - ;; being used, keep a list of tags used for switch tags and - ;; use them instead (see `byte-compile-inline-lapcode'). - (not byte-compile-jump-tables)) + (not (memq (car lap1) '(TAG nil)))) (setq tmp rest) (let ((i 0) - (opt-p (memq byte-optimize-log '(t lap))) + (opt-p (memq byte-optimize-log '(t byte))) str deleted) (while (and (setq tmp (cdr tmp)) (not (eq 'TAG (car (car tmp))))) |