+2014-10-20 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * emacs-lisp/bytecomp.el (=, <, >, <=, >=): Don't optimize multi-arg
+ case (bug#18767).
+
2014-10-20 Glenn Morris <rgm@gnu.org>
* Version 24.4 released.
(byte-defop-compiler cons 2)
(byte-defop-compiler aref 2)
(byte-defop-compiler set 2)
-(byte-defop-compiler (= byte-eqlsign) 2-and)
-(byte-defop-compiler (< byte-lss) 2-and)
-(byte-defop-compiler (> byte-gtr) 2-and)
-(byte-defop-compiler (<= byte-leq) 2-and)
-(byte-defop-compiler (>= byte-geq) 2-and)
+(byte-defop-compiler (= byte-eqlsign) 2) ;; -and bug#18767
+(byte-defop-compiler (< byte-lss) 2) ;; -and bug#18767
+(byte-defop-compiler (> byte-gtr) 2) ;; -and bug#18767
+(byte-defop-compiler (<= byte-leq) 2) ;; -and bug#18767
+(byte-defop-compiler (>= byte-geq) 2) ;; -and bug#18767
(byte-defop-compiler get 2)
(byte-defop-compiler nth 2)
(byte-defop-compiler substring 2-3)
(defun byte-compile-and-folded (form)
"Compile calls to functions like `<='.
These implicitly `and' together a bunch of two-arg bytecodes."
+ ;; FIXME: bug#18767 means we can't do it this way!
(let ((l (length form)))
(cond
((< l 3) (byte-compile-form `(progn ,(nth 1 form) t)))