summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
Diffstat (limited to 'lisp')
-rw-r--r--lisp/emacs-lisp/comp-cstr.el3
-rw-r--r--lisp/emacs-lisp/comp.el3
2 files changed, 6 insertions, 0 deletions
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)))))