guile-commits
[Top][All Lists]
Advanced

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

[Guile-commits] 05/08: Fix add-prompt-control-flow-edges for terms with


From: Andy Wingo
Subject: [Guile-commits] 05/08: Fix add-prompt-control-flow-edges for terms with no continuation
Date: Wed, 3 Jan 2018 15:31:24 -0500 (EST)

wingo pushed a commit to branch master
in repository guile.

commit de5c81b1d14e29799e7ba957f5db1db1231207e2
Author: Andy Wingo <address@hidden>
Date:   Wed Jan 3 18:54:55 2018 +0100

    Fix add-prompt-control-flow-edges for terms with no continuation
    
    * module/language/cps/slot-allocation.scm (add-prompt-control-flow-edges):
      Allow for terms that don't continue, and add them to the minimal
      prompt control flow edges set.
---
 module/language/cps/slot-allocation.scm | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

diff --git a/module/language/cps/slot-allocation.scm 
b/module/language/cps/slot-allocation.scm
index 106496a..76cb48d 100644
--- a/module/language/cps/slot-allocation.scm
+++ b/module/language/cps/slot-allocation.scm
@@ -249,10 +249,9 @@ body continuation in the prompt."
         ;; continuations that postdominate the rest of the body.  Unless
         ;; you pass #:complete? #t, we only invoke F on continuations
         ;; that can leave the body, or on back-edges in loops.
-        (intset-any (lambda (succ)
-                      (or (not (intset-ref body succ))
-                          (<= succ label)))
-                    (intmap-ref succs label)))
+        (not (intset-any (lambda (succ)
+                           (and (intset-ref body succ) (< label succ)))
+                         (intmap-ref succs label))))
       (intset-fold (lambda (pred succs)
                      (intmap-replace succs pred handler intset-add))
                    (if complete? body (intset-filter out-or-back-edge? body))



reply via email to

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