summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp
diff options
context:
space:
mode:
authorMattias EngdegÄrd <mattiase@acm.org>2022-07-15 21:28:30 +0200
committerMattias EngdegÄrd <mattiase@acm.org>2022-07-16 12:17:32 +0200
commiteb0e93478e423974fe6c7c7e4d183ea8d9f0e742 (patch)
tree872797f73a334fd6e1512d39376833b0197cbc91 /lisp/emacs-lisp
parent69223ee97539a73dfd7eef9607e0d3a3911ea93b (diff)
downloademacs-eb0e93478e423974fe6c7c7e4d183ea8d9f0e742.tar.gz
emacs-eb0e93478e423974fe6c7c7e4d183ea8d9f0e742.tar.bz2
emacs-eb0e93478e423974fe6c7c7e4d183ea8d9f0e742.zip
Transform (list) -> nil in source optimiser
This optimisation is already done in the code generator but performing it at this earlier stage is a useful normalising step that uncovers more opportunities. * lisp/emacs-lisp/byte-opt.el (byte-optimize-list): New.
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r--lisp/emacs-lisp/byte-opt.el5
1 files changed, 5 insertions, 0 deletions
diff --git a/lisp/emacs-lisp/byte-opt.el b/lisp/emacs-lisp/byte-opt.el
index a24a5044562..5a138e9fee5 100644
--- a/lisp/emacs-lisp/byte-opt.el
+++ b/lisp/emacs-lisp/byte-opt.el
@@ -1287,6 +1287,11 @@ See Info node `(elisp) Integer Basics'."
`(list ,(nth 1 form))
form))
+(put 'list 'byte-optimizer #'byte-optimize-list)
+(defun byte-optimize-list (form)
+ ;; (list) -> nil
+ (and (cdr form) form))
+
;; Fixme: delete-char -> delete-region (byte-coded)
(put 'set 'byte-optimizer #'byte-optimize-set)