summaryrefslogtreecommitdiff
path: root/module/language/tree-il/optimize.scm
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2018-01-05 09:54:03 +0100
committerAndy Wingo <wingo@pobox.com>2018-01-05 10:19:54 +0100
commit16db934bbcac87c1a41557af18ae875d395c63c2 (patch)
tree8f5bb2e9887b56a1548d69408e808a7e8835a5d2 /module/language/tree-il/optimize.scm
parent118f516a8b24ddbfd425603312da351fa8197a5c (diff)
downloadguile-16db934bbcac87c1a41557af18ae875d395c63c2.tar.gz
Add (system base optimize) module
* module/system/base/optimize.scm: New module. * module/Makefile.am (SOURCES): * am/bootstrap.am (SOURCES): Add new module. * module/language/tree-il/optimize.scm (tree-il-optimizations): Rename from tree-il-default-optimization-options. Directly specify the optimization level at which a pass should be enabled. * module/language/cps/optimize.scm (cps-optimizations): Likewise, rename from cps-default-optimization-options. * module/scripts/compile.scm (%options, show-optimization-help): Adapt to use new module.
Diffstat (limited to 'module/language/tree-il/optimize.scm')
-rw-r--r--module/language/tree-il/optimize.scm14
1 files changed, 10 insertions, 4 deletions
diff --git a/module/language/tree-il/optimize.scm b/module/language/tree-il/optimize.scm
index 8fa6a80e8..1bd0c7905 100644
--- a/module/language/tree-il/optimize.scm
+++ b/module/language/tree-il/optimize.scm
@@ -1,6 +1,6 @@
;;; Tree-il optimizer
-;; Copyright (C) 2009, 2011, 2012, 2013, 2014, 2015 Free Software Foundation, Inc.
+;; Copyright (C) 2009, 2010-2015, 2018 Free Software Foundation, Inc.
;;;; This library is free software; you can redistribute it and/or
;;;; modify it under the terms of the GNU Lesser General Public
@@ -26,7 +26,7 @@
#:use-module (language tree-il debug)
#:use-module (ice-9 match)
#:export (optimize
- tree-il-default-optimization-options))
+ tree-il-optimizations))
(define (optimize x env opts)
(let ((peval (match (memq #:partial-eval? opts)
@@ -39,5 +39,11 @@
(peval (expand-primitives (resolve-primitives x env))
env)))))
-(define (tree-il-default-optimization-options)
- '(#:partial-eval? #t))
+(define (tree-il-optimizations)
+ ;; Avoid resolve-primitives until -O2, when CPS optimizations kick in.
+ ;; Otherwise, inlining the primcalls during Tree-IL->CPS compilation
+ ;; will result in a lot of code that will never get optimized nicely.
+ '((#:resolve-primitives? 2)
+ (#:expand-primitives? 1)
+ (#:partial-eval? 1)
+ (#:fix-letrec? 1)))