emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 717e7edc2ac: * lisp/emacs-lisp/comp.el (comp--add-cond-cstrs): Co


From: Stefan Monnier
Subject: master 717e7edc2ac: * lisp/emacs-lisp/comp.el (comp--add-cond-cstrs): Consolidate 2 cases
Date: Fri, 29 Mar 2024 15:36:54 -0400 (EDT)

branch: master
commit 717e7edc2ac1e4e04019319da19c5386077dfbea
Author: Stefan Monnier <monnier@iro.umontreal.ca>
Commit: Stefan Monnier <monnier@iro.umontreal.ca>

    * lisp/emacs-lisp/comp.el (comp--add-cond-cstrs): Consolidate 2 cases
---
 lisp/emacs-lisp/comp.el | 36 +++++++++++-------------------------
 1 file changed, 11 insertions(+), 25 deletions(-)

diff --git a/lisp/emacs-lisp/comp.el b/lisp/emacs-lisp/comp.el
index 2544be85bb2..2ec55ed98ee 100644
--- a/lisp/emacs-lisp/comp.el
+++ b/lisp/emacs-lisp/comp.el
@@ -2036,37 +2036,23 @@ TARGET-BB-SYM is the symbol name of the target block."
               (,(pred comp--call-op-p)
                ,(and (pred comp--known-predicate-p) fun)
                ,op))
-        ;; (comment ,_comment-str)
-        (cond-jump ,cmp-res ,(pred comp-mvar-p) . ,blocks))
-       (cl-loop
-        with target-mvar = (comp--cond-cstrs-target-mvar op (car insns-seq) b)
-        for branch-target-cell on blocks
-        for branch-target = (car branch-target-cell)
-        for negated in '(t nil)
-        when (comp--mvar-used-p target-mvar)
-        do
-        (let ((block-target (comp--add-cond-cstrs-target-block b 
branch-target)))
-          (setf (car branch-target-cell) (comp-block-name block-target))
-          (comp--emit-assume 'and target-mvar (if negated
-                                                  (comp--pred-to-neg-cstr fun)
-                                                (comp--pred-to-pos-cstr fun))
-                             block-target nil))
-        finally (cl-return-from in-the-basic-block)))
-      ;; Match predicate on the negated branch (unless).
-      (`((set ,(and (pred comp-mvar-p) cmp-res)
-              (,(pred comp--call-op-p)
-               ,(and (pred comp--known-predicate-p) fun)
-               ,op))
-         (set ,neg-cmp-res (call eq ,cmp-res ,(pred comp-cstr-null-p)))
-        (cond-jump ,neg-cmp-res ,(pred comp-mvar-p) . ,blocks))
+         . ,(or
+            ;; (comment ,_comment-str)
+            (and `((cond-jump ,cmp-res ,(pred comp-mvar-p) . ,blocks))
+                 (let negated-branch nil))
+             (and `((set ,neg-cmp-res
+                        (call eq ,cmp-res ,(pred comp-cstr-null-p)))
+                   (cond-jump ,neg-cmp-res ,(pred comp-mvar-p) . ,blocks))
+                 (let negated-branch t))))
        (cl-loop
         with target-mvar = (comp--cond-cstrs-target-mvar op (car insns-seq) b)
         for branch-target-cell on blocks
         for branch-target = (car branch-target-cell)
-        for negated in '(nil t)
+        for negated in (if negated-branch '(nil t) '(t nil))
         when (comp--mvar-used-p target-mvar)
         do
-        (let ((block-target (comp--add-cond-cstrs-target-block b 
branch-target)))
+        (let ((block-target (comp--add-cond-cstrs-target-block
+                             b branch-target)))
           (setf (car branch-target-cell) (comp-block-name block-target))
           (comp--emit-assume 'and target-mvar (if negated
                                                   (comp--pred-to-neg-cstr fun)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]