summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLudovic Courtès <ludo@gnu.org>2020-03-23 22:05:45 +0100
committerLudovic Courtès <ludo@gnu.org>2020-03-23 22:49:47 +0100
commitf8f8986e4a5fad520e0f9e5e150b45178c0a7ed4 (patch)
treee367c9f7d64b2fc07b3eabb715ca1189b270428c
parent6111b86bdcc0dd4c8821ccf70fecc5dbd8590830 (diff)
downloadguile-f8f8986e4a5fad520e0f9e5e150b45178c0a7ed4.tar.gz
'sort-labels-locally' uses a transient intset.
* module/language/cps/renumber.scm (sort-labels-locally): Use a transient intset.
-rw-r--r--module/language/cps/renumber.scm8
1 files changed, 4 insertions, 4 deletions
diff --git a/module/language/cps/renumber.scm b/module/language/cps/renumber.scm
index 7200a5fcf..19080c502 100644
--- a/module/language/cps/renumber.scm
+++ b/module/language/cps/renumber.scm
@@ -1,6 +1,6 @@
;;; Continuation-passing style (CPS) intermediate language (IL)
-;; Copyright (C) 2013-2019 Free Software Foundation, Inc.
+;; Copyright (C) 2013-2020 Free Software Foundation, Inc.
;;;; This library is free software; you can redistribute it and/or
;;;; modify it under the terms of the GNU Lesser General Public
@@ -80,8 +80,8 @@
(let-values (((order visited) (visit k0 order visited)))
(visit k1 order visited)))
(if (intset-ref visited k)
- (values order visited)
- (let ((visited (intset-add visited k)))
+ (values order (persistent-intset visited))
+ (let ((visited (intset-add! visited k)))
(call-with-values
(lambda ()
(match (intmap-ref conts k)
@@ -109,7 +109,7 @@
(($ $ktail) (values order visited))))
(lambda (order visited)
;; Add k to the reverse post-order.
- (values (cons k order) visited))))))))
+ (values (cons k order) (persistent-intset visited)))))))))
(define (compute-renaming conts kfun)
;; labels := old -> new