summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp
diff options
context:
space:
mode:
authorMattias EngdegÄrd <mattiase@acm.org>2022-12-16 15:56:04 +0100
committerMattias EngdegÄrd <mattiase@acm.org>2022-12-16 19:18:34 +0100
commit6283b9233459d74f95e9b0300f025a49f9674fb9 (patch)
treee252e8cb4228b1321d59e14b3cbbac8980d5f694 /lisp/emacs-lisp
parent30d2b72c4124b351026a8a5420686d5dc04ecc61 (diff)
downloademacs-6283b9233459d74f95e9b0300f025a49f9674fb9.tar.gz
emacs-6283b9233459d74f95e9b0300f025a49f9674fb9.tar.bz2
emacs-6283b9233459d74f95e9b0300f025a49f9674fb9.zip
Elide broken but unnecessary `if` optimisations
* lisp/emacs-lisp/byte-opt.el (byte-optimize-if): Remove explicit clauses purposing to simplify (if X nil t) -> (not X) (if X t nil) -> (not (not X)) but never did so because of a coding mistake (eq instead of equal), found by a recently added warning. They weren't actually needed thanks to the optimiser's fixpoint iteration: we eventually get the same results through (if X nil t) -> (if (not X) t nil) -> (if (not X) t) -> (not X) (if X t nil) -> (if X t) -> (not (not X))
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r--lisp/emacs-lisp/byte-opt.el7
1 files changed, 2 insertions, 5 deletions
diff --git a/lisp/emacs-lisp/byte-opt.el b/lisp/emacs-lisp/byte-opt.el
index 55b68c58438..898dfffef63 100644
--- a/lisp/emacs-lisp/byte-opt.el
+++ b/lisp/emacs-lisp/byte-opt.el
@@ -1298,11 +1298,8 @@ See Info node `(elisp) Integer Basics'."
(if else
`(progn ,condition ,@else)
condition))
- ;; (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))))
+ ;; (if X t) -> (not (not X))
+ ((and (eq then t) (null else))
`(not ,(byte-opt--negate condition)))
;; (if VAR VAR X...) -> (or VAR (progn X...))
((and (symbolp condition) (eq condition then))