]> git.eshelyaron.com Git - emacs.git/commitdiff
Do not add unnecesary arg constraints (bug#45812 bug#45705 bug#45751).
authorAndrea Corallo <akrl@sdf.org>
Mon, 18 Jan 2021 21:37:52 +0000 (22:37 +0100)
committerAndrea Corallo <akrl@sdf.org>
Tue, 19 Jan 2021 20:58:53 +0000 (21:58 +0100)
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.

lisp/emacs-lisp/comp-cstr.el
lisp/emacs-lisp/comp.el

index 651c7b7931e29fe139a76bcc031b6eaa935386d3..1afb928e10cf75c9488f6bb86655f13fa448141e 100644 (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.")
+
 \f
 ;;; Value handling.
 
index d2e0d0fb79da65a6b5b3e5100326f4f494835fa5..02a9f4ae1ffe15e6d31cc6eca627290f8f989b7d 100644 (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)))))