mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-06-11 06:20:23 +02:00
Revert "Bootstrap build doesn't have to expand CPS optimizations"
This reverts commit ce36fb16ff
.
This commit is contained in:
parent
ce36fb16ff
commit
8d79dfddb6
1 changed files with 34 additions and 38 deletions
|
@ -24,6 +24,20 @@
|
||||||
|
|
||||||
(define-module (language cps optimize)
|
(define-module (language cps optimize)
|
||||||
#:use-module (ice-9 match)
|
#:use-module (ice-9 match)
|
||||||
|
#:use-module (language cps constructors)
|
||||||
|
#:use-module (language cps contification)
|
||||||
|
#:use-module (language cps cse)
|
||||||
|
#: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)
|
||||||
|
#:use-module (language cps specialize-primcalls)
|
||||||
|
#:use-module (language cps type-fold)
|
||||||
#:use-module (language cps verify)
|
#:use-module (language cps verify)
|
||||||
#:export (optimize-higher-order-cps
|
#:export (optimize-higher-order-cps
|
||||||
optimize-first-order-cps
|
optimize-first-order-cps
|
||||||
|
@ -41,7 +55,7 @@
|
||||||
(verify program)
|
(verify program)
|
||||||
program))
|
program))
|
||||||
|
|
||||||
(define-syntax-rule (define-optimizer optimize ((@ mod pass) kw default) ...)
|
(define-syntax-rule (define-optimizer optimize (pass kw default) ...)
|
||||||
(define* (optimize program #:optional (opts '()))
|
(define* (optimize program #:optional (opts '()))
|
||||||
;; This series of assignments to `program' used to be a series of
|
;; This series of assignments to `program' used to be a series of
|
||||||
;; let* bindings of `program', as you would imagine. In compiled
|
;; let* bindings of `program', as you would imagine. In compiled
|
||||||
|
@ -58,7 +72,7 @@
|
||||||
(maybe-verify program)
|
(maybe-verify program)
|
||||||
(set! program
|
(set! program
|
||||||
(if (kw-arg-ref opts kw default)
|
(if (kw-arg-ref opts kw default)
|
||||||
(maybe-verify ((module-ref (resolve-interface 'mod) 'pass) program))
|
(maybe-verify (pass program))
|
||||||
program))
|
program))
|
||||||
...
|
...
|
||||||
(maybe-verify program)))
|
(maybe-verify program)))
|
||||||
|
@ -74,45 +88,27 @@
|
||||||
;; pass back here when that's fixed.
|
;; pass back here when that's fixed.
|
||||||
;;
|
;;
|
||||||
;; (split-rec #:split-rec? #t)
|
;; (split-rec #:split-rec? #t)
|
||||||
((@ (language cps dce) eliminate-dead-code)
|
(eliminate-dead-code #:eliminate-dead-code? #t)
|
||||||
#:eliminate-dead-code? #t)
|
(prune-top-level-scopes #:prune-top-level-scopes? #t)
|
||||||
((@ (language cps prune-top-level-scopes) prune-top-level-scopes)
|
(simplify #:simplify? #t)
|
||||||
#:prune-top-level-scopes? #t)
|
(contify #:contify? #t)
|
||||||
((@ (language cps simplify) simplify)
|
(inline-constructors #:inline-constructors? #t)
|
||||||
#:simplify? #t)
|
(specialize-primcalls #:specialize-primcalls? #t)
|
||||||
((@ (language cps contification) contify)
|
(elide-values #:elide-values? #t)
|
||||||
#:contify? #t)
|
(prune-bailouts #:prune-bailouts? #t)
|
||||||
((@ (language cps constructors) inline-constructors)
|
(peel-loops #:peel-loops? #t)
|
||||||
#:inline-constructors? #t)
|
(eliminate-common-subexpressions #:cse? #t)
|
||||||
((@ (language cps specialize-primcalls) specialize-primcalls)
|
(type-fold #:type-fold? #t)
|
||||||
#:specialize-primcalls? #t)
|
(resolve-self-references #:resolve-self-references? #t)
|
||||||
((@ (language cps elide-values) elide-values)
|
(eliminate-dead-code #:eliminate-dead-code? #t)
|
||||||
#:elide-values? #t)
|
(simplify #:simplify? #t))
|
||||||
((@ (language cps prune-bailouts) prune-bailouts)
|
|
||||||
#:prune-bailouts? #t)
|
|
||||||
((@ (language cps peel-loops) peel-loops)
|
|
||||||
#:peel-loops? #t)
|
|
||||||
((@ (language cps cse) eliminate-common-subexpressions)
|
|
||||||
#:cse? #t)
|
|
||||||
((@ (language cps type-fold) type-fold)
|
|
||||||
#:type-fold? #t)
|
|
||||||
((@ (language cps self-references) resolve-self-references)
|
|
||||||
#:resolve-self-references? #t)
|
|
||||||
((@ (language cps dce) eliminate-dead-code)
|
|
||||||
#:eliminate-dead-code? #t)
|
|
||||||
((@ (language cps simplify) simplify)
|
|
||||||
#:simplify? #t))
|
|
||||||
|
|
||||||
(define-optimizer optimize-first-order-cps
|
(define-optimizer optimize-first-order-cps
|
||||||
((@ (language cps licm) hoist-loop-invariant-code)
|
(hoist-loop-invariant-code #:licm? #t)
|
||||||
#:licm? #t)
|
|
||||||
;; FIXME: CSE here to eliminate duplicate free-ref terms.
|
;; FIXME: CSE here to eliminate duplicate free-ref terms.
|
||||||
((@ (language cps dce) eliminate-dead-code)
|
(eliminate-dead-code #:eliminate-dead-code? #t)
|
||||||
#:eliminate-dead-code? #t)
|
(rotate-loops #:rotate-loops? #t)
|
||||||
((@ (language cps rotate-loops) rotate-loops)
|
(simplify #:simplify? #t))
|
||||||
#:rotate-loops? #t)
|
|
||||||
((@ (language cps simplify) simplify)
|
|
||||||
#:simplify? #t))
|
|
||||||
|
|
||||||
(define (cps-default-optimization-options)
|
(define (cps-default-optimization-options)
|
||||||
(list ;; #:split-rec? #t
|
(list ;; #:split-rec? #t
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue