summaryrefslogtreecommitdiff
path: root/module/language/tree-il/optimize.scm
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2021-04-01 14:46:01 +0200
committerAndy Wingo <wingo@pobox.com>2021-05-11 21:39:07 +0200
commita892791b43a68a80f2caeab49b123bc828324969 (patch)
tree1f3279ef50372b92171417867afe411de5aa601c /module/language/tree-il/optimize.scm
parent809b1651289b330fbcc30d539e1b3c5c20bc83af (diff)
downloadguile-a892791b43a68a80f2caeab49b123bc828324969.tar.gz
Add pass to resolve free toplevel references in declarative modules
* am/bootstrap.am (SOURCES): * module/Makefile.am (SOURCES): * module/language/tree-il/optimize.scm (make-optimizer): Wire up the new pass. * module/language/tree-il/resolve-free-vars.scm: New pass. * module/system/base/optimize.scm (available-optimizations): Enable new pass at -O1.
Diffstat (limited to 'module/language/tree-il/optimize.scm')
-rw-r--r--module/language/tree-il/optimize.scm2
1 files changed, 2 insertions, 0 deletions
diff --git a/module/language/tree-il/optimize.scm b/module/language/tree-il/optimize.scm
index c080bbbc2..ba55f974b 100644
--- a/module/language/tree-il/optimize.scm
+++ b/module/language/tree-il/optimize.scm
@@ -39,6 +39,7 @@
'proc)))))
(let ((verify (or (lookup #:verify-tree-il? debug verify-tree-il)
(lambda (exp) exp)))
+ (modulify (lookup #:resolve-free-vars? resolve-free-vars))
(resolve (lookup #:resolve-primitives? primitives resolve-primitives))
(expand (lookup #:expand-primitives? primitives expand-primitives))
(letrectify (lookup #:letrectify? letrectify))
@@ -49,6 +50,7 @@
(when proc (set! exp (verify (proc exp arg ...)))))
(lambda (exp env)
(verify exp)
+ (run-pass! (modulify exp))
(run-pass! (resolve exp env))
(run-pass! (expand exp))
(run-pass! (letrectify exp #:seal-private-bindings? seal?))