summaryrefslogtreecommitdiff
path: root/module/language/cps/optimize.scm
diff options
context:
space:
mode:
authorAndy Wingo <wingo@pobox.com>2020-08-11 23:09:51 +0200
committerAndy Wingo <wingo@pobox.com>2020-08-12 23:30:08 +0200
commit03998db647546df017feb19c0d5912e7451a61fc (patch)
tree968fe99c1a0e39b96a340b37c0f0ed2199e1e65e /module/language/cps/optimize.scm
parentcd5ab6377bb14cb8248e0ba577ee0c44bce43b60 (diff)
downloadguile-03998db647546df017feb19c0d5912e7451a61fc.tar.gz
Add new pass to optimize branch chains to table dispatch
* module/language/cps/switch.scm: New pass. * module/Makefile.am (SOURCES): * am/bootstrap.am (SOURCES): Add switch.scm. * module/system/base/optimize.scm (available-optimizations): * module/language/cps/optimize.scm (optimize-first-order-cps): Run switch optimization at level 2. * libguile/hash.c (JENKINS_LOOKUP3_HASHWORD2): Add note regarding cross-compilation. * module/language/cps/graphs.scm (intmap-select): New definition. * module/language/cps/utils.scm (compute-singly-referenced-labels): Move here, from various places. Doesn't take a body intset argument. * module/language/cps/contification.scm: * module/language/cps/closure-conversion.scm: * module/language/cps/simplify.scm: Use compute-singly-referenced-labels from utils. * module/language/cps/effects-analysis.scm (annotation->memory-kind*): (annotation->memory-kind): Add symbol annotation cases.
Diffstat (limited to 'module/language/cps/optimize.scm')
-rw-r--r--module/language/cps/optimize.scm2
1 files changed, 2 insertions, 0 deletions
diff --git a/module/language/cps/optimize.scm b/module/language/cps/optimize.scm
index 632b2cac1..1a2305ed4 100644
--- a/module/language/cps/optimize.scm
+++ b/module/language/cps/optimize.scm
@@ -40,6 +40,7 @@
#:use-module (language cps specialize-numbers)
#:use-module (language cps specialize-primcalls)
#:use-module (language cps split-rec)
+ #:use-module (language cps switch)
#:use-module (language cps type-fold)
#:use-module (language cps verify)
#:use-module (system base optimize)
@@ -107,6 +108,7 @@
(specialize-primcalls #:specialize-primcalls?)
(eliminate-common-subexpressions #:cse?)
(eliminate-dead-code #:eliminate-dead-code?)
+ (optimize-branch-chains #:optimize-branch-chains?)
;; Running simplify here enables rotate-loops to do a better job.
(simplify #:simplify?)
(rotate-loops #:rotate-loops?)