aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVibhav Pant2018-03-25 11:22:50 +0530
committerVibhav Pant2018-03-25 11:22:50 +0530
commitd73d1384aa6d647a930b4dfe3e91505da4ffee21 (patch)
tree54cf0a06f70575f10d07b04a1db7741dbd4f2bfd
parenta140513acb4ce27bd2b3472ee7a6ecb92676a8e9 (diff)
downloademacs-d73d1384aa6d647a930b4dfe3e91505da4ffee21.tar.gz
emacs-d73d1384aa6d647a930b4dfe3e91505da4ffee21.zip
Fix byte-optimize-memq incorrectly optimizing some memq forms.
* lisp/emacs-lisp/byte-opt.el (byte-optimize-memq): Call byte-optimize-and only for memq forms that can be optimized, use byte-optimize-predicate to optimize the final form.
-rw-r--r--lisp/emacs-lisp/byte-opt.el9
1 files changed, 5 insertions, 4 deletions
diff --git a/lisp/emacs-lisp/byte-opt.el b/lisp/emacs-lisp/byte-opt.el
index 54421e01be6..004f58cc12f 100644
--- a/lisp/emacs-lisp/byte-opt.el
+++ b/lisp/emacs-lisp/byte-opt.el
@@ -774,10 +774,11 @@
774 (when (and (eq (car-safe list) 'quote) 774 (when (and (eq (car-safe list) 'quote)
775 (listp (setq list (cadr list))) 775 (listp (setq list (cadr list)))
776 (= (length list) 1)) 776 (= (length list) 1))
777 (setq form `(and ,(byte-optimize-predicate 777 (setq form (byte-optimize-and
778 `(eq ,(nth 1 form) ',(nth 0 list))) 778 `(and ,(byte-optimize-predicate
779 ',list)))) 779 `(eq ,(nth 1 form) ',(nth 0 list)))
780 (byte-optimize-and form))) 780 ',list)))))
781 (byte-optimize-predicate form)))
781 782
782(put 'identity 'byte-optimizer 'byte-optimize-identity) 783(put 'identity 'byte-optimizer 'byte-optimize-identity)
783(put 'memq 'byte-optimizer 'byte-optimize-memq) 784(put 'memq 'byte-optimizer 'byte-optimize-memq)