summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp
diff options
context:
space:
mode:
authorEli Zaretskii <eliz@gnu.org>2022-12-16 19:27:33 +0200
committerEli Zaretskii <eliz@gnu.org>2022-12-16 19:27:33 +0200
commit856d889f3a87cd6a45c52db2adc6b1a4fdc9295a (patch)
tree21bce18eca8f858d3163cc9bcc677543903669a5 /lisp/emacs-lisp
parent8e42e20ed7f3c243542acf3ea1cd34e38e36aace (diff)
downloademacs-856d889f3a87cd6a45c52db2adc6b1a4fdc9295a.tar.gz
emacs-856d889f3a87cd6a45c52db2adc6b1a4fdc9295a.tar.bz2
emacs-856d889f3a87cd6a45c52db2adc6b1a4fdc9295a.zip
Revert "Elide broken but unnecessary `if` optimisations"
This reverts commit 13aa376e93564a8cf2ddbbcf0968c6666620db89. Please don't install anything on the release branch that is not a clear bugfix for a known bug.
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r--lisp/emacs-lisp/byte-opt.el7
1 files changed, 5 insertions, 2 deletions
diff --git a/lisp/emacs-lisp/byte-opt.el b/lisp/emacs-lisp/byte-opt.el
index 0da2a9b882d..a7e1df3622d 100644
--- a/lisp/emacs-lisp/byte-opt.el
+++ b/lisp/emacs-lisp/byte-opt.el
@@ -1297,8 +1297,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))