So I hacked modules/cps/optimize.scm to display the optimization phases.
Here is what I got up to the point where guile hangs.
It looks like it's hanging in specialize-numbers.
running eliminate-dead-code
running prune-top-level-scopes
running simplify
running contify
running inline-constructors
running elide-values
running prune-bailouts
running peel-loops
running eliminate-common-subexpressions
running type-fold
running resolve-self-references
running eliminate-dead-code
running simplify
running specialize-numbers
The patch:
--- module/language/cps/optimize.scm-orig 2020-03-21
14:16:17.313452995 -0700
+++ module/language/cps/optimize.scm 2020-03-21 14:18:32.264770889 -0700
@@ -73,7 +73,10 @@
(maybe-verify program)
(set! program
(if (kw-arg-ref opts kw default)
- (maybe-verify (pass program))
+ (begin
+ (display "running ") (display (quote pass)) (newline)
+ (force-output (current-output-port))
+ (maybe-verify (pass program)))
program))
...
(maybe-verify program)))