1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-20 11:40:18 +02:00

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.
This commit is contained in:
Andy Wingo 2018-01-03 18:54:55 +01:00
parent ee15ca1455
commit de5c81b1d1

View file

@ -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))