diff options
author | Stefan Kangas <stefankangas@gmail.com> | 2022-12-19 04:42:18 +0100 |
---|---|---|
committer | Stefan Kangas <stefankangas@gmail.com> | 2022-12-19 04:42:18 +0100 |
commit | d468cf91b9fbcd915644246f27dbaa87e23c7e7b (patch) | |
tree | c88c14f5372b67e3f02bcb16359b99256d9f2800 /lisp/emacs-lisp/byte-opt.el | |
parent | 9a633dce63904b54738a63eb5007869fd851419a (diff) | |
parent | de2239a584ab9b3bcdea2379f2c54ea3d20d596f (diff) | |
download | emacs-d468cf91b9fbcd915644246f27dbaa87e23c7e7b.tar.gz |
Merge from origin/emacs-29
de2239a584a Revert "alist-get testfn argument evaluation correction"
856d889f3a8 Revert "Elide broken but unnecessary `if` optimisations"
8e42e20ed7f Revert "Use equal and member instead of eq and memq"
Diffstat (limited to 'lisp/emacs-lisp/byte-opt.el')
-rw-r--r-- | lisp/emacs-lisp/byte-opt.el | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/lisp/emacs-lisp/byte-opt.el b/lisp/emacs-lisp/byte-opt.el index 898dfffef63..55b68c58438 100644 --- a/lisp/emacs-lisp/byte-opt.el +++ b/lisp/emacs-lisp/byte-opt.el @@ -1298,8 +1298,11 @@ See Info node `(elisp) Integer Basics'." (if else `(progn ,condition ,@else) condition)) - ;; (if X t) -> (not (not X)) - ((and (eq then t) (null else)) + ;; (if X nil t) -> (not X) + ((and (eq then nil) (eq else '(t))) + `(not ,condition)) + ;; (if X t [nil]) -> (not (not X)) + ((and (eq then t) (or (null else) (eq else '(nil)))) `(not ,(byte-opt--negate condition))) ;; (if VAR VAR X...) -> (or VAR (progn X...)) ((and (symbolp condition) (eq condition then)) |