From: Andrea Corallo Date: Mon, 29 May 2023 16:06:33 +0000 (+0200) Subject: Revert "* Nativecomp disable propagation of pre slot access type check..." X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=fbc96dcc4eadd4cce067ba6d177efc69ed459a27;p=emacs.git Revert "* Nativecomp disable propagation of pre slot access type check..." This reverts commit c8e527cbeeea6be9bb713af33a3f40408b261234 as 56a8d57d032 fixes the root cause. --- diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el index 937d9fdf926..ec51f805c2b 100644 --- a/lisp/emacs-lisp/comp.el +++ b/lisp/emacs-lisp/comp.el @@ -2550,19 +2550,19 @@ TARGET-BB-SYM is the symbol name of the target block." for insns-seq on (comp-block-insns b) do (pcase insns-seq - ;; (`((set ,(and (pred comp-mvar-p) mvar-tested-copy) - ;; ,(and (pred comp-mvar-p) mvar-tested)) - ;; (set ,(and (pred comp-mvar-p) mvar-1) - ;; (call type-of ,(and (pred comp-mvar-p) mvar-tested-copy))) - ;; (set ,(and (pred comp-mvar-p) mvar-2) - ;; (call symbol-value ,(and (pred comp-cstr-cl-tag-p) mvar-tag))) - ;; (set ,(and (pred comp-mvar-p) mvar-3) - ;; (call memq ,(and (pred comp-mvar-p) mvar-1) ,(and (pred comp-mvar-p) mvar-2))) - ;; (cond-jump ,(and (pred comp-mvar-p) mvar-3) ,(pred comp-mvar-p) ,bb1 ,bb2)) - ;; (push `(assume ,mvar-tested ,(make-comp-mvar :type (comp-cstr-cl-tag mvar-tag))) - ;; (comp-block-insns (comp-add-cond-cstrs-target-block b bb2))) - ;; (push `(assume ,mvar-tested ,(make-comp-mvar :type (comp-cstr-cl-tag mvar-tag) :neg t)) - ;; (comp-block-insns (comp-add-cond-cstrs-target-block b bb1)))) + (`((set ,(and (pred comp-mvar-p) mvar-tested-copy) + ,(and (pred comp-mvar-p) mvar-tested)) + (set ,(and (pred comp-mvar-p) mvar-1) + (call type-of ,(and (pred comp-mvar-p) mvar-tested-copy))) + (set ,(and (pred comp-mvar-p) mvar-2) + (call symbol-value ,(and (pred comp-cstr-cl-tag-p) mvar-tag))) + (set ,(and (pred comp-mvar-p) mvar-3) + (call memq ,(and (pred comp-mvar-p) mvar-1) ,(and (pred comp-mvar-p) mvar-2))) + (cond-jump ,(and (pred comp-mvar-p) mvar-3) ,(pred comp-mvar-p) ,bb1 ,bb2)) + (push `(assume ,mvar-tested ,(make-comp-mvar :type (comp-cstr-cl-tag mvar-tag))) + (comp-block-insns (comp-add-cond-cstrs-target-block b bb2))) + (push `(assume ,mvar-tested ,(make-comp-mvar :type (comp-cstr-cl-tag mvar-tag) :neg t)) + (comp-block-insns (comp-add-cond-cstrs-target-block b bb1)))) (`((set ,(and (pred comp-mvar-p) cmp-res) (,(pred comp-call-op-p) ,(and (or (pred comp-equality-fun-p)