emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 52b67740d10: Generalise a LAP optimisation rule


From: Mattias Engdegård
Subject: master 52b67740d10: Generalise a LAP optimisation rule
Date: Sat, 25 Mar 2023 12:22:22 -0400 (EDT)

branch: master
commit 52b67740d10df8ca539fdc2c7d50283997683141
Author: Mattias Engdegård <mattiase@acm.org>
Commit: Mattias Engdegård <mattiase@acm.org>

    Generalise a LAP optimisation rule
    
    * lisp/emacs-lisp/byte-opt.el (byte-optimize-lapcode):
    Accept (stack-set 1) as equivalent to (discardN-preserve-tos 1) in a
    rule previously overlooked.  This is usually beneficial in code size
    and almost always shortens dynamic paths.
---
 lisp/emacs-lisp/byte-opt.el | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/lisp/emacs-lisp/byte-opt.el b/lisp/emacs-lisp/byte-opt.el
index 3c7aeb89525..0891ec80beb 100644
--- a/lisp/emacs-lisp/byte-opt.el
+++ b/lisp/emacs-lisp/byte-opt.el
@@ -2765,7 +2765,9 @@ If FOR-EFFECT is non-nil, the return value is assumed to 
be of no importance."
                       (or (memq (caar tmp) '(byte-discard byte-discardN))
                           ;; Make sure we don't hoist a discardN-preserve-tos
                           ;; that really should be merged or deleted instead.
-                          (and (eq (caar tmp) 'byte-discardN-preserve-tos)
+                          (and (or (eq (caar tmp) 'byte-discardN-preserve-tos)
+                                   (and (eq (caar tmp) 'byte-stack-set)
+                                        (eql (cdar tmp) 1)))
                                (let ((next (cadr tmp)))
                                  (not (or (memq (car next)
                                                 '(byte-discardN-preserve-tos



reply via email to

[Prev in Thread] Current Thread [Next in Thread]