Compiling sample `program.scm` fails; closure-lifting pass missing

Hi,

I'm having trouble getting the demo program.scm file to compile with laco. I'm on an Apple Silicon machine, if that matters. I attach below what I ran into; I couldn't make much sense of the trace.

[jhemann:laco] 19:31:02$ cat program.scm
(define (main x)
  (gpio-toggle! 'dev_led0)
  (usleep 200000)
  (if (= x 0)
	  #t
	  (main (- x 1))))
(main 10)

[jhemann:laco] 19:31:47$ which laco
/usr/local/bin/laco
[jhemann:laco] 19:31:52$ laco -t lir program.scm
Backtrace:
In ice-9/boot-9.scm:
  1755:12  4 (with-exception-handler _ _ #:unwind? _ #:unwind-for-type _)
In unknown file:
           3 (apply-smob/0 #<thunk 100a0e300>)
In ice-9/boot-9.scm:
    724:2  2 (call-with-prompt _ _ #<procedure default-prompt-handler (k proc)>)
In ice-9/eval.scm:
    619:8  1 (_ #(#(#<directory (guile-user) 100a11c80>)))
In laco/compile.scm:
   276:25  0 (laco-compile _)

laco/compile.scm:276:25: In procedure laco-compile:
Throw to key `laco-error' with args `(#<procedure get-pass (name)> "Invalid pass `~a'!" closure-lifting)'.
[jhemann:laco] 19:32:04$ rg closure-lifting
laco/compile.scm
135:     closure-lifting

hall.scm
52:              (compiled-scheme-file "closure-lifting")
54:              (scheme-file "closure-lifting")

laco/pass/closure-lifting.scm
17:(define-module (laco pass closure-lifting)
190:(define-pass closure-lifting expr
[jhemann:laco] 19:32:43$

The file closure-lifting.scm is indeed not getting compiled.

ls ./laco/pass/ | grep closure
closure-conversion.go
closure-conversion.scm
closure-lifting.scm

I still had the configuration and install terminal output, if that's valuable.

./configure
checking for a BSD-compatible install... /opt/homebrew/bin/ginstall -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... /opt/homebrew/bin/gmkdir -p
checking for gawk... gawk
checking whether make sets $(MAKE)... yes
checking whether make supports nested variables... yes
checking whether make supports nested variables... (cached) yes
checking for pkg-config... /opt/homebrew/bin/pkg-config
checking pkg-config is at least version 0.9.0... yes
configure: checking for guile 3.0
configure: found guile 3.0
checking for guile-3.0... no
checking for guile3.0... no
checking for guile-3... no
checking for guile3... no
checking for guile... /opt/homebrew/bin/guile
checking for Guile version >= 3.0... 3.0.10
checking for guild... /opt/homebrew/bin/guild
checking for guile-config... /opt/homebrew/bin/guile-config
checking for Guile site directory... /opt/homebrew/Cellar/guile/3.0.10/share/guile/site/3.0
checking for Guile site-ccache directory using pkgconfig... /opt/homebrew/Cellar/guile/3.0.10/lib/guile/3.0/site-ccache
checking for Guile extensions directory... /opt/homebrew/Cellar/guile/3.0.10/lib/guile/3.0/extensions
checking that generated files are newer than configure... done
configure: creating ./config.status
config.status: creating Makefile
config.status: creating pre-inst-env
config.status: creating scripts/laco
[jhemann:laco] 19:53:21$ make -j5
  GEN      laco.go
  GEN      laco/assembler/sasm.go
  GEN      laco/assembler/encode.go
  GEN      laco/lpass/remove-unused-captures.go
  GEN      laco/lpass/fv-lifting.go
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;;       or pass the --no-auto-compile argument to disable.
;;; compiling /opt/homebrew/bin/guild
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;;       or pass the --no-auto-compile argument to disable.
;;; compiling /opt/homebrew/bin/guild
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;;       or pass the --no-auto-compile argument to disable.
;;; compiling /opt/homebrew/bin/guild
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;;       or pass the --no-auto-compile argument to disable.
;;; compiling /opt/homebrew/bin/guild
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;;       or pass the --no-auto-compile argument to disable.
;;; compiling /opt/homebrew/bin/guild
;;; compiled /Users/jhemann/.cache/guile/ccache/3.0-LE-8-4.7/opt/homebrew/Cellar/guile/3.0.10/bin/guild.go
;;; compiled /Users/jhemann/.cache/guile/ccache/3.0-LE-8-4.7/opt/homebrew/Cellar/guile/3.0.10/bin/guild.go
;;; compiled /Users/jhemann/.cache/guile/ccache/3.0-LE-8-4.7/opt/homebrew/Cellar/guile/3.0.10/bin/guild.go
;;; compiled /Users/jhemann/.cache/guile/ccache/3.0-LE-8-4.7/opt/homebrew/Cellar/guile/3.0.10/bin/guild.go
;;; compiled /Users/jhemann/.cache/guile/ccache/3.0-LE-8-4.7/opt/homebrew/Cellar/guile/3.0.10/bin/guild.go
wrote `laco.go'
  GEN      laco/lpass/closure-capture-fv.go
wrote `laco/assembler/sasm.go'
  GEN      laco/pass/closure-conversion.go
wrote `laco/lpass/remove-unused-captures.go'
  GEN      laco/pass/dce.go
wrote `laco/assembler/encode.go'
  GEN      laco/pass/effect-analysis.go
wrote `laco/lpass/fv-lifting.go'
  GEN      laco/pass/useless-cont.go
wrote `laco/lpass/closure-capture-fv.go'
  GEN      laco/pass/useless-constant.go
wrote `laco/pass/dce.go'
  GEN      laco/pass/tco.go
wrote `laco/pass/useless-cont.go'
  GEN      laco/pass/primitive-conversion.go
wrote `laco/pass/effect-analysis.go'
  GEN      laco/pass/normalize.go
wrote `laco/pass/useless-constant.go'
  GEN      laco/pass/lambda-lifting.go
wrote `laco/pass/closure-conversion.go'
  GEN      laco/pass/func-inline.go
wrote `laco/pass/primitive-conversion.go'
  GEN      laco/pass/fold-const.go
wrote `laco/pass/tco.go'
  GEN      laco/pass/fold-branch.go
wrote `laco/pass/normalize.go'
  GEN      laco/pass/eta-func.go
wrote `laco/pass/lambda-lifting.go'
  GEN      laco/pass/eta-cont.go
wrote `laco/pass/func-inline.go'
wrote `laco/pass/fold-const.go'
  GEN      laco/pass/escape-analysis.go
  GEN      laco/pass/elre.go
wrote `laco/pass/fold-branch.go'
  GEN      laco/pass/delta-reduction.go
wrote `laco/pass/eta-func.go'
  GEN      laco/pass/const-propagation.go
wrote `laco/pass/eta-cont.go'
  GEN      laco/pass/args-extend.go
wrote `laco/pass/escape-analysis.go'
  GEN      laco/records/syntactic.go
wrote `laco/pass/delta-reduction.go'
  GEN      laco/records/procedural.go
wrote `laco/pass/elre.go'
  GEN      laco/utils.go
wrote `laco/pass/const-propagation.go'
  GEN      laco/types.go
wrote `laco/pass/args-extend.go'
  GEN      laco/sasm.go
wrote `laco/records/syntactic.go'
  GEN      laco/records.go
wrote `laco/records.go'
  GEN      laco/primitives.go
wrote `laco/records/procedural.go'
  GEN      laco/pass.go
wrote `laco/types.go'
wrote `  GEN      laco/parser.go
laco/pass.go'
  GEN      laco/object.go
wrote `laco/sasm.go'
  GEN      laco/module.go
wrote `laco/utils.go'
  GEN      laco/lir.go
wrote `laco/module.go'
  GEN      laco/env.go
wrote `laco/object.go'
  GEN      laco/cps.go
wrote `laco/env.go'
  GEN      laco/compile.go
wrote `laco/parser.go'
  GEN      laco/codegen.go
wrote `laco/primitives.go'
  GEN      laco/ast.go
wrote `laco/compile.go'
  GEN      laco/openai.go
wrote `laco/ast.go'
  GEN      laco/assembler.go
laco/openai.scm:39:6: warning: non-literal format string
wrote `laco/codegen.go'
wrote `laco/openai.go'
wrote `laco/lir.go'
wrote `laco/assembler.go'
wrote `laco/cps.go'
[jhemann:laco] 19:53:34$ sudo make install
Password:
 /opt/homebrew/bin/gmkdir -p '/usr/local/bin'
 /opt/homebrew/bin/ginstall -c scripts/laco '/usr/local/bin'
 /opt/homebrew/bin/gmkdir -p '/usr/local/share/info'
 /opt/homebrew/bin/ginstall -c -m 644 ./doc/version ./doc/laco '/usr/local/share/info'
 install-info --info-dir='/usr/local/share/info' '/usr/local/share/info/version'
install-info: warning: no info dir entry in `/usr/local/share/info/version'
 install-info --info-dir='/usr/local/share/info' '/usr/local/share/info/laco'
install-info: warning: no info dir entry in `/usr/local/share/info/laco'
 /opt/homebrew/bin/gmkdir -p '/opt/homebrew/Cellar/guile/3.0.10/share/guile/site/3.0'
 /opt/homebrew/bin/gmkdir -p '/opt/homebrew/Cellar/guile/3.0.10/share/guile/site/3.0/laco/pass'
 /opt/homebrew/bin/ginstall -c -m 644  laco/pass/closure-conversion.scm laco/pass/dce.scm laco/pass/effect-analysis.scm laco/pass/useless-cont.scm laco/pass/useless-constant.scm laco/pass/tco.scm laco/pass/primitive-conversion.scm laco/pass/normalize.scm laco/pass/lambda-lifting.scm laco/pass/func-inline.scm laco/pass/fold-const.scm laco/pass/fold-branch.scm laco/pass/eta-func.scm laco/pass/eta-cont.scm laco/pass/escape-analysis.scm laco/pass/elre.scm laco/pass/delta-reduction.scm laco/pass/const-propagation.scm laco/pass/args-extend.scm '/opt/homebrew/Cellar/guile/3.0.10/share/guile/site/3.0/laco/pass'
 /opt/homebrew/bin/gmkdir -p '/opt/homebrew/Cellar/guile/3.0.10/share/guile/site/3.0/laco/lpass'
 /opt/homebrew/bin/ginstall -c -m 644  laco/lpass/remove-unused-captures.scm laco/lpass/fv-lifting.scm laco/lpass/closure-capture-fv.scm '/opt/homebrew/Cellar/guile/3.0.10/share/guile/site/3.0/laco/lpass'
 /opt/homebrew/bin/ginstall -c -m 644  laco.scm '/opt/homebrew/Cellar/guile/3.0.10/share/guile/site/3.0/.'
 /opt/homebrew/bin/gmkdir -p '/opt/homebrew/Cellar/guile/3.0.10/share/guile/site/3.0/laco/assembler'
 /opt/homebrew/bin/ginstall -c -m 644  laco/assembler/sasm.scm laco/assembler/encode.scm '/opt/homebrew/Cellar/guile/3.0.10/share/guile/site/3.0/laco/assembler'
 /opt/homebrew/bin/gmkdir -p '/opt/homebrew/Cellar/guile/3.0.10/share/guile/site/3.0/laco'
 /opt/homebrew/bin/ginstall -c -m 644  laco/utils.scm laco/types.scm laco/sasm.scm laco/records.scm laco/primitives.scm laco/pass.scm laco/parser.scm laco/object.scm laco/module.scm laco/lir.scm laco/env.scm laco/cps.scm laco/compile.scm laco/codegen.scm laco/ast.scm laco/openai.scm laco/assembler.scm '/opt/homebrew/Cellar/guile/3.0.10/share/guile/site/3.0/laco'
 /opt/homebrew/bin/gmkdir -p '/opt/homebrew/Cellar/guile/3.0.10/share/guile/site/3.0/laco/records'
 /opt/homebrew/bin/ginstall -c -m 644  laco/records/syntactic.scm laco/records/procedural.scm '/opt/homebrew/Cellar/guile/3.0.10/share/guile/site/3.0/laco/records'
 /opt/homebrew/bin/gmkdir -p '/opt/homebrew/Cellar/guile/3.0.10/lib/guile/3.0/site-ccache'
 /opt/homebrew/bin/gmkdir -p '/opt/homebrew/Cellar/guile/3.0.10/lib/guile/3.0/site-ccache/laco/pass'
 /opt/homebrew/bin/ginstall -c -m 644  laco/pass/closure-conversion.go laco/pass/dce.go laco/pass/effect-analysis.go laco/pass/useless-cont.go laco/pass/useless-constant.go laco/pass/tco.go laco/pass/primitive-conversion.go laco/pass/normalize.go laco/pass/lambda-lifting.go laco/pass/func-inline.go laco/pass/fold-const.go laco/pass/fold-branch.go laco/pass/eta-func.go laco/pass/eta-cont.go laco/pass/escape-analysis.go laco/pass/elre.go laco/pass/delta-reduction.go laco/pass/const-propagation.go laco/pass/args-extend.go '/opt/homebrew/Cellar/guile/3.0.10/lib/guile/3.0/site-ccache/laco/pass'
 /opt/homebrew/bin/gmkdir -p '/opt/homebrew/Cellar/guile/3.0.10/lib/guile/3.0/site-ccache/laco/lpass'
 /opt/homebrew/bin/ginstall -c -m 644  laco/lpass/remove-unused-captures.go laco/lpass/fv-lifting.go laco/lpass/closure-capture-fv.go '/opt/homebrew/Cellar/guile/3.0.10/lib/guile/3.0/site-ccache/laco/lpass'
 /opt/homebrew/bin/ginstall -c -m 644  laco.go '/opt/homebrew/Cellar/guile/3.0.10/lib/guile/3.0/site-ccache/.'
 /opt/homebrew/bin/gmkdir -p '/opt/homebrew/Cellar/guile/3.0.10/lib/guile/3.0/site-ccache/laco/assembler'
 /opt/homebrew/bin/ginstall -c -m 644  laco/assembler/sasm.go laco/assembler/encode.go '/opt/homebrew/Cellar/guile/3.0.10/lib/guile/3.0/site-ccache/laco/assembler'
 /opt/homebrew/bin/gmkdir -p '/opt/homebrew/Cellar/guile/3.0.10/lib/guile/3.0/site-ccache/laco'
 /opt/homebrew/bin/ginstall -c -m 644  laco/utils.go laco/types.go laco/sasm.go laco/records.go laco/primitives.go laco/pass.go laco/parser.go laco/object.go laco/module.go laco/lir.go laco/env.go laco/cps.go laco/compile.go laco/codegen.go laco/ast.go laco/openai.go laco/assembler.go '/opt/homebrew/Cellar/guile/3.0.10/lib/guile/3.0/site-ccache/laco'
 /opt/homebrew/bin/gmkdir -p '/opt/homebrew/Cellar/guile/3.0.10/lib/guile/3.0/site-ccache/laco/records'
 /opt/homebrew/bin/ginstall -c -m 644  laco/records/syntactic.go laco/records/procedural.go '/opt/homebrew/Cellar/guile/3.0.10/lib/guile/3.0/site-ccache/laco/records'