From 2593bbee51f4d15d3a4fc1d4e2e3b215222f783a Mon Sep 17 00:00:00 2001 From: Andrea Corallo Date: Sat, 4 Jul 2020 15:53:15 +0100 Subject: [PATCH] * Relax constant folding rules * lisp/emacs-lisp/comp.el (comp-function-optimizable-p): No need to check for operands or result to be fixnums. --- lisp/emacs-lisp/comp.el | 9 ++------- 1 file 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." -- 2.39.5