[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Guile-commits] 04/04: Optimize ordering edges in fix-letrec
From: |
Andy Wingo |
Subject: |
[Guile-commits] 04/04: Optimize ordering edges in fix-letrec |
Date: |
Wed, 22 Jan 2025 11:12:41 -0500 (EST) |
wingo pushed a commit to branch main
in repository guile.
commit 4a6347c3718478e3a41647f4aad71e2df6c024de
Author: Andy Wingo <wingo@pobox.com>
AuthorDate: Wed Jan 22 16:51:28 2025 +0100
Optimize ordering edges in fix-letrec
* module/language/tree-il/fix-letrec.scm (compute-sccs): Instead of
depending on all previous complex bindings, we can just depend on the
most recent one. Decreases the graph size.
---
module/language/tree-il/fix-letrec.scm | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/module/language/tree-il/fix-letrec.scm
b/module/language/tree-il/fix-letrec.scm
index f7811f95e..38c1c0282 100644
--- a/module/language/tree-il/fix-letrec.scm
+++ b/module/language/tree-il/fix-letrec.scm
@@ -221,8 +221,10 @@ code to sort letrec* bindings by identifier value."
;; Rely on identifier ordering.
(intset-fold (lambda (id out prev)
(values
- (intmap-add out id (intset-intersect complex prev))
- (intset-add prev id)))
+ (intmap-add out id prev)
+ (if (intset-ref complex id)
+ (intset id)
+ prev)))
node-ids empty-intmap empty-intset)
empty-intmap))
(define sccs