diff options
author | Andrea Corallo <akrl@sdf.org> | 2020-07-04 15:53:15 +0100 |
---|---|---|
committer | Andrea Corallo <akrl@sdf.org> | 2020-07-04 15:55:48 +0100 |
commit | 2593bbee51f4d15d3a4fc1d4e2e3b215222f783a (patch) | |
tree | 58495d9b5a1ba2430eaf77a8d42fbae1f89dc8a0 /lisp/emacs-lisp | |
parent | b0f683ec16ae55f2788e21e30db21044766fcad9 (diff) | |
download | emacs-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')
-rw-r--r-- | lisp/emacs-lisp/comp.el | 9 |
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." |