diff options
author | Andy Wingo <wingo@pobox.com> | 2018-01-05 09:54:03 +0100 |
---|---|---|
committer | Andy Wingo <wingo@pobox.com> | 2018-01-05 10:19:54 +0100 |
commit | 16db934bbcac87c1a41557af18ae875d395c63c2 (patch) | |
tree | 8f5bb2e9887b56a1548d69408e808a7e8835a5d2 /module/language/tree-il/optimize.scm | |
parent | 118f516a8b24ddbfd425603312da351fa8197a5c (diff) | |
download | guile-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.scm | 14 |
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))) |