diff options
author | Andy Wingo <wingo@pobox.com> | 2020-05-08 16:47:07 +0200 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2020-05-08 17:07:56 +0200 |
commit | 4311dc9858ba7c6db50a851e95fc7c387b9381b2 (patch) | |
tree | 6ad4eaa887b09aadea70c0664eb5ddf66becb136 /module/system/base/compile.scm | |
parent | e9c0f3071dedb0f6b39757e920cdc182435c8725 (diff) | |
download | guile-4311dc9858ba7c6db50a851e95fc7c387b9381b2.tar.gz |
Define new "lowering" phase in compiler
* module/language/cps/compile-bytecode.scm (compile-bytecode):
* module/language/tree-il/compile-bytecode.scm (compile-bytecode):
* module/language/tree-il/compile-cps.scm (compile-cps): Rely on
compiler to lower incoming term already.
* module/language/tree-il/optimize.scm (make-lowerer): New procedure.
* module/system/base/compile.scm (compute-lowerer): New procedure,
replaceing add-default-optimizations.
(compute-compiler): Lower before running compiler.
* module/system/base/language.scm (<language>): Change
optimizations-for-level field to "lowerer".
* module/scripts/compile.scm (%options, compile): Parse -O0, -O1 and so
on to #:optimization-level instead of expanding to all the
optimization flags.
* module/language/cps/optimize.scm (lower-cps): Move here from
compile-bytecode.scm.
(make-cps-lowerer): New function.
* module/language/cps/spec.scm (cps): Declare lowerer.
Diffstat (limited to 'module/system/base/compile.scm')
-rw-r--r-- | module/system/base/compile.scm | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/module/system/base/compile.scm b/module/system/base/compile.scm index 7ec2da3c2..3ea1e7aca 100644 --- a/module/system/base/compile.scm +++ b/module/system/base/compile.scm @@ -224,11 +224,11 @@ ((#:warnings warnings . _) warnings) ((_ _ . opts) (lp opts)))))))) -(define (add-default-optimizations lang optimization-level opts) +(define (compute-lowerer lang optimization-level opts) (level-validator optimization-level) - (match (language-optimizations-for-level lang) - (#f opts) - (get-opts (append opts (get-opts optimization-level))))) + (match (language-lowerer lang) + (#f (lambda (exp env) exp)) + (proc (proc optimization-level opts)))) (define (compute-compiler from to optimization-level warning-level opts) (let lp ((order (or (lookup-compilation-order from to) @@ -237,10 +237,10 @@ (() (lambda (exp env) (values exp env env))) (((lang . pass) . order) (let* ((analyze (compute-analyzer lang warning-level opts)) - (opts (add-default-optimizations lang optimization-level opts)) + (lower (compute-lowerer lang optimization-level opts)) (compile (lambda (exp env) (analyze exp env) - (pass exp env opts))) + (pass (lower exp env) env opts))) (tail (lp order))) (lambda (exp env) (let*-values (((exp env cenv) (compile exp env)) |