From: Andrea Corallo Date: Mon, 18 Jan 2021 21:37:52 +0000 (+0100) Subject: Do not add unnecesary arg constraints (bug#45812 bug#45705 bug#45751). X-Git-Tag: emacs-28.0.90~2727^2~163 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=0ffb3dfaa483b0c5cf1f7f367efcb5e9c041ab53;p=emacs.git Do not add unnecesary arg constraints (bug#45812 bug#45705 bug#45751). These have the effect of bloating the IR for no effect killing compile time. The typical cases for that are extremely long backuoted lists. * lisp/emacs-lisp/comp-cstr.el (comp-cstr-t): New var. * lisp/emacs-lisp/comp.el (comp-add-call-cstr): No need to add arg call constraints if this is t. --- diff --git a/lisp/emacs-lisp/comp-cstr.el b/lisp/emacs-lisp/comp-cstr.el index 651c7b7931e..1afb928e10c 100644 --- a/lisp/emacs-lisp/comp-cstr.el +++ b/lisp/emacs-lisp/comp-cstr.el @@ -179,6 +179,9 @@ Return them as multiple value." (defvar comp-cstr-one (comp-value-to-cstr 1) "Represent the integer immediate one.") +(defvar comp-cstr-t (comp-type-to-cstr t) + "Represent the superclass t.") + ;;; Value handling. diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el index d2e0d0fb79d..02a9f4ae1ff 100644 --- a/lisp/emacs-lisp/comp.el +++ b/lisp/emacs-lisp/comp.el @@ -2513,6 +2513,9 @@ TARGET-BB-SYM is the symbol name of the target block." do (signal 'native-ice (list "Incoherent type specifier for function" f)) when (and target + ;; No need to add call constraints if this is t + ;; (bug#45812 bug#45705 bug#45751). + (not (equal comp-cstr-t cstr)) (or (null lhs) (not (eql (comp-mvar-slot lhs) (comp-mvar-slot target)))))