1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-20 11:40:18 +02:00
guile/module/language
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
..
brainfuck Add compiler chooser implementation; fix bugs with previous commit 2020-05-08 22:56:37 +02:00
bytecode Rename "RTL" to "bytecode" 2013-12-02 21:31:47 +01:00
cps CSE computes online map of constant values, uses it to fold branches 2020-08-26 10:04:20 +02:00
ecmascript Deprecate passing a non-zero size to make-module 2019-09-27 22:57:38 +02:00
elisp Add copyright header for (language elisp falias), and fix typo. 2018-08-07 12:07:27 +02:00
scheme Merge remote-tracking branch 'origin/stable-2.0' 2013-08-11 22:46:22 -04:00
tree-il Fold eqv? to eq? on exact integers according to target fixnum range 2020-08-12 23:30:08 +02:00
value Add 'for-humans?' flag to <language> specifications. 2013-01-27 10:16:40 -05:00
bytecode.scm Add sign-extending make-immediate instruction 2020-07-30 17:36:11 +02:00
cps.scm Add $switch CPS term kind 2020-08-12 23:30:08 +02:00
tree-il.scm Add with-lexicals helper; fix bug in (equal? #t (foo) #t) 2020-05-13 14:51:56 +02:00