* Relax constant folding rules

* lisp/emacs-lisp/comp.el (comp-function-optimizable-p): No need to
check for operands or result to be fixnums.
This commit is contained in:
Andrea Corallo 2020-07-04 15:53:15 +01:00
parent b0f683ec16
commit 2593bbee51

View file

@ -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."