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)