summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Monnier <monnier@iro.umontreal.ca>2014-10-19 22:36:22 -0400
committerStefan Monnier <monnier@iro.umontreal.ca>2014-10-19 22:36:22 -0400
commit41e856b539eab6080eeacd313c7f201dc3955d8c (patch)
treecc2ce4248a8f1ff3a7abe5963b9ad7df8d02d1e1
parent9b4fdfd9b67aa9e370cd20e0188f08678daa665c (diff)
downloademacs-41e856b539eab6080eeacd313c7f201dc3955d8c.tar.gz
* lisp/emacs-lisp/bytecomp.el (=, <, >, <=, >=): Don't optimize multi-arg
case. Fixes: debbugs:18767
-rw-r--r--lisp/ChangeLog5
-rw-r--r--lisp/emacs-lisp/bytecomp.el11
2 files changed, 11 insertions, 5 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 6b0c8a67b79..1a458522079 100644
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,8 @@
+2014-10-20 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * emacs-lisp/bytecomp.el (=, <, >, <=, >=): Don't optimize multi-arg
+ case (bug#18767).
+
2014-10-15 Alan Mackenzie <acm@muc.de>
* cus-edit.el (custom-command-apply): Specify the return value in
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index e5f8a8cc22a..69c4e0f1628 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -3261,11 +3261,11 @@ If it is nil, then the handler is \"byte-compile-SYMBOL.\""
(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)
@@ -3332,6 +3332,7 @@ If it is nil, then the handler is \"byte-compile-SYMBOL.\""
(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)))