1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-06-10 14:00:21 +02:00
guile/module/language/cps
Andy Wingo 8b994be59f CSE computes online map of constant values, uses it to fold branches
* module/language/cps/cse.scm (intset-intersect*): New helper.  Use it
  to replace manual uses.
  (lset-unionq, meet-constants, adjoin-constant, set-constants): New
  helpers.
  (compute-consts): New function, to compute constants at each label,
  using not only definitions but flow.
  (<analysis>): Add consts to analysis.
  (elide-predecessor, prune-branch, forward-branch, compute-out-edges)
  (propagate-analysis, eliminate-common-subexpressions-in-fun): Plumb
  consts through the algorithm.
  (fold-branch): Fold an eq-constant? using the flow-determined constant
  info.  Finally allows compile-bytecode to fold to switch statements!
* module/language/cps/optimize.scm (optimize-first-order-cps): Move
  branch chain optimization before the final CSE/DCE pass.
2020-08-26 10:04:20 +02:00
..
closure-conversion.scm Add new pass to optimize branch chains to table dispatch 2020-08-12 23:30:08 +02:00
compile-bytecode.scm Add $switch CPS term kind 2020-08-12 23:30:08 +02:00
contification.scm Add new pass to optimize branch chains to table dispatch 2020-08-12 23:30:08 +02:00
cse.scm CSE computes online map of constant values, uses it to fold branches 2020-08-26 10:04:20 +02:00
dce.scm Add $switch CPS term kind 2020-08-12 23:30:08 +02:00
devirtualize-integers.scm Add $switch CPS term kind 2020-08-12 23:30:08 +02:00
effects-analysis.scm Add new pass to optimize branch chains to table dispatch 2020-08-12 23:30:08 +02:00
graphs.scm Add new pass to optimize branch chains to table dispatch 2020-08-12 23:30:08 +02:00
intmap.scm Fix intmap-intersect edge case 2019-06-11 12:56:23 +02:00
intset.scm Replace bit-position with bitvector-position 2020-04-12 22:39:55 +02:00
licm.scm Add $switch CPS term kind 2020-08-12 23:30:08 +02:00
loop-instrumentation.scm Add $switch CPS term kind 2020-08-12 23:30:08 +02:00
optimize.scm CSE computes online map of constant values, uses it to fold branches 2020-08-26 10:04:20 +02:00
peel-loops.scm Add $switch CPS term kind 2020-08-12 23:30:08 +02:00
prune-top-level-scopes.scm cache-current-module, etc use immediate primcall parameters 2017-11-05 15:00:16 +01:00
reify-primitives.scm CPS compiler reduces eq? on constant to eq-constant? 2020-08-03 22:19:18 +02:00
renumber.scm Add $switch CPS term kind 2020-08-12 23:30:08 +02:00
rotate-loops.scm Add $switch CPS term kind 2020-08-12 23:30:08 +02:00
self-references.scm Add $switch CPS term kind 2020-08-12 23:30:08 +02:00
simplify.scm Add new pass to optimize branch chains to table dispatch 2020-08-12 23:30:08 +02:00
slot-allocation.scm Add $switch CPS term kind 2020-08-12 23:30:08 +02:00
spec.scm Define new "lowering" phase in compiler 2020-05-08 17:07:56 +02:00
specialize-numbers.scm Add $switch CPS term kind 2020-08-12 23:30:08 +02:00
specialize-primcalls.scm Compiler allocates boxed flonums in unmarked space 2019-08-26 10:19:24 +02:00
split-rec.scm Add $switch CPS term kind 2020-08-12 23:30:08 +02:00
switch.scm Add new pass to optimize branch chains to table dispatch 2020-08-12 23:30:08 +02:00
type-checks.scm $branch is now a distinct CPS term type 2018-01-03 16:16:39 +01:00
type-fold.scm Add $switch CPS term kind 2020-08-12 23:30:08 +02:00
types.scm Add new pass to optimize branch chains to table dispatch 2020-08-12 23:30:08 +02:00
utils.scm Add new pass to optimize branch chains to table dispatch 2020-08-12 23:30:08 +02:00
verify.scm Add $switch CPS term kind 2020-08-12 23:30:08 +02:00
with-cps.scm Add missing files 2015-07-22 18:27:37 +02:00