From: Andrea Corallo Date: Sat, 4 Jul 2020 14:53:15 +0000 (+0100) Subject: * Relax constant folding rules X-Git-Tag: emacs-28.0.90~2727^2~534 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=2593bbee51f4d15d3a4fc1d4e2e3b215222f783a;p=emacs.git * Relax constant folding rules * lisp/emacs-lisp/comp.el (comp-function-optimizable-p): No need to check for operands or result to be fixnums. --- 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."