diff options
Diffstat (limited to 'module/language/cps/optimize.scm')
-rw-r--r-- | module/language/cps/optimize.scm | 53 |
1 files changed, 24 insertions, 29 deletions
diff --git a/module/language/cps/optimize.scm b/module/language/cps/optimize.scm index 522de5124..ef73d4996 100644 --- a/module/language/cps/optimize.scm +++ b/module/language/cps/optimize.scm @@ -1,6 +1,6 @@ ;;; Continuation-passing style (CPS) intermediate language (IL) -;; Copyright (C) 2013, 2014, 2015 Free Software Foundation, Inc. +;; Copyright (C) 2013, 2014, 2015, 2017, 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 @@ -24,15 +24,13 @@ (define-module (language cps optimize) #:use-module (ice-9 match) - #:use-module (language cps constructors) #:use-module (language cps contification) #:use-module (language cps cse) + #:use-module (language cps devirtualize-integers) #:use-module (language cps dce) - #:use-module (language cps elide-values) #:use-module (language cps licm) #:use-module (language cps peel-loops) #:use-module (language cps prune-top-level-scopes) - #:use-module (language cps prune-bailouts) #:use-module (language cps rotate-loops) #:use-module (language cps self-references) #:use-module (language cps simplify) @@ -42,7 +40,7 @@ #:use-module (language cps verify) #:export (optimize-higher-order-cps optimize-first-order-cps - cps-default-optimization-options)) + cps-optimizations)) (define (kw-arg-ref args kw default) (match (memq kw args) @@ -93,9 +91,8 @@ (prune-top-level-scopes #:prune-top-level-scopes? #t) (simplify #:simplify? #t) (contify #:contify? #t) - (inline-constructors #:inline-constructors? #t) - (elide-values #:elide-values? #t) - (prune-bailouts #:prune-bailouts? #t) + (simplify #:simplify? #t) + (devirtualize-integers #:devirtualize-integers? #t) (peel-loops #:peel-loops? #t) (eliminate-common-subexpressions #:cse? #t) (type-fold #:type-fold? #t) @@ -106,30 +103,28 @@ (define-optimizer optimize-first-order-cps (specialize-numbers #:specialize-numbers? #t) (hoist-loop-invariant-code #:licm? #t) + (specialize-primcalls #:specialize-primcalls? #t) (eliminate-common-subexpressions #:cse? #t) (eliminate-dead-code #:eliminate-dead-code? #t) ;; Running simplify here enables rotate-loops to do a better job. (simplify #:simplify? #t) (rotate-loops #:rotate-loops? #t) - (simplify #:simplify? #t) - (specialize-primcalls #:specialize-primcalls? #t)) + (simplify #:simplify? #t)) -(define (cps-default-optimization-options) - (list ;; #:split-rec? #t - #:simplify? #t - #:eliminate-dead-code? #t - #:prune-top-level-scopes? #t - #:contify? #t - #:inline-constructors? #t - #:specialize-primcalls? #t - #:elide-values? #t - #:prune-bailouts? #t - #:peel-loops? #t - #:cse? #t - #:type-fold? #t - #:resolve-self-references? #t - #:specialize-numbers? #t - #:licm? #t - #:rotate-loops? #t - ;; This one is used by the slot allocator. - #:precolor-calls? #t)) +(define (cps-optimizations) + '( ;; (#:split-rec? #t) + (#:simplify? 2) + (#:eliminate-dead-code? 2) + (#:prune-top-level-scopes? 2) + (#:contify? 2) + (#:specialize-primcalls? 2) + (#:peel-loops? 2) + (#:cse? 2) + (#:type-fold? 2) + (#:resolve-self-references? 2) + (#:devirtualize-integers? 2) + (#:specialize-numbers? 2) + (#:licm? 2) + (#:rotate-loops? 2) + ;; This one is used by the slot allocator. + (#:precolor-calls? 2))) |