[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)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- master 717e7edc2ac: * lisp/emacs-lisp/comp.el (comp--add-cond-cstrs): Consolidate 2 cases,
Stefan Monnier <=