From 0ffb3dfaa483b0c5cf1f7f367efcb5e9c041ab53 Mon Sep 17 00:00:00 2001 From: Andrea Corallo Date: Mon, 18 Jan 2021 22:37:52 +0100 Subject: [PATCH] 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. --- lisp/emacs-lisp/comp-cstr.el | 3 +++ lisp/emacs-lisp/comp.el | 3 +++ 2 files changed, 6 insertions(+) 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))))) -- 2.39.5