guile-commits
[Top][All Lists]
Advanced

[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



reply via email to

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