Optimise apply with cons in tail argument

* lisp/emacs-lisp/byte-opt.el (byte-optimize-apply): Transform

  (apply F ... (cons X Y)) -> (apply F ... X Y)

This pattern is seen both in hand-written code and in backquote
expansions.
This commit is contained in:
Mattias Engdegård 2023-01-12 14:07:45 +01:00
parent 77659bd463
commit 2a85d7a07c

View file

@ -1380,6 +1380,9 @@ See Info node `(elisp) Integer Basics'."
;; (apply F ... (list X Y ...)) -> (funcall F ... X Y ...)
((eq (car-safe last) 'list)
`(funcall ,fn ,@(butlast (cddr form)) ,@(cdr last)))
;; (apply F ... (cons X Y)) -> (apply F ... X Y)
((eq (car-safe last) 'cons)
(append (butlast form) (cdr last)))
(t form)))
form)))