From: Vibhav Pant Date: Sun, 25 Mar 2018 05:52:50 +0000 (+0530) Subject: Fix byte-optimize-memq incorrectly optimizing some memq forms. X-Git-Tag: emacs-27.0.90~5398 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=d73d1384aa6d647a930b4dfe3e91505da4ffee21;p=emacs.git 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. --- 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 @@ (when (and (eq (car-safe list) 'quote) (listp (setq list (cadr list))) (= (length list) 1)) - (setq form `(and ,(byte-optimize-predicate - `(eq ,(nth 1 form) ',(nth 0 list))) - ',list)))) - (byte-optimize-and form))) + (setq form (byte-optimize-and + `(and ,(byte-optimize-predicate + `(eq ,(nth 1 form) ',(nth 0 list))) + ',list))))) + (byte-optimize-predicate form))) (put 'identity 'byte-optimizer 'byte-optimize-identity) (put 'memq 'byte-optimizer 'byte-optimize-memq)