summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/comp.el
diff options
context:
space:
mode:
authorAndrea Corallo <akrl@sdf.org>2020-07-04 15:53:15 +0100
committerAndrea Corallo <akrl@sdf.org>2020-07-04 15:55:48 +0100
commit2593bbee51f4d15d3a4fc1d4e2e3b215222f783a (patch)
tree58495d9b5a1ba2430eaf77a8d42fbae1f89dc8a0 /lisp/emacs-lisp/comp.el
parentb0f683ec16ae55f2788e21e30db21044766fcad9 (diff)
downloademacs-2593bbee51f4d15d3a4fc1d4e2e3b215222f783a.tar.gz
emacs-2593bbee51f4d15d3a4fc1d4e2e3b215222f783a.tar.bz2
emacs-2593bbee51f4d15d3a4fc1d4e2e3b215222f783a.zip
* Relax constant folding rules
* lisp/emacs-lisp/comp.el (comp-function-optimizable-p): No need to check for operands or result to be fixnums.
Diffstat (limited to 'lisp/emacs-lisp/comp.el')
-rw-r--r--lisp/emacs-lisp/comp.el9
1 files changed, 2 insertions, 7 deletions
diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el
index 81612398c7b..da567fd9054 100644
--- a/lisp/emacs-lisp/comp.el
+++ b/lisp/emacs-lisp/comp.el
@@ -1994,13 +1994,8 @@ Here goes everything that can be done not iteratively (read once).
(memq (get f 'byte-optimizer) comp-propagate-classes)
(let ((values (mapcar #'comp-mvar-constant args)))
(pcase f
- ;; Simple integer operation.
- ;; Note: byte-opt uses `byte-opt--portable-numberp'
- ;; instead of just`fixnump'.
- ((or '+ '- '* '1+ '-1) (and (cl-every #'fixnump values)
- (fixnump (apply f values))))
- ('/ (and (cl-every #'fixnump values)
- (not (= (car (last values)) 0)))))))))
+ ((or '+ '- '* '1+ '-1) t)
+ ('/ (not (= (car (last values)) 0))))))))
(defsubst comp-function-call-maybe-remove (insn f args)
"Given INSN when F is pure if all ARGS are known remove the function call."