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.
This commit is contained in:
Andrea Corallo 2021-01-18 22:37:52 +01:00
parent 39b3bcd324
commit 0ffb3dfaa4
2 changed files with 6 additions and 0 deletions

View file

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

View file

@ -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)))))