mirror of
https://git.savannah.gnu.org/git/guile.git
synced 2025-05-20 11:40:18 +02:00
* 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. |
||
---|---|---|
.. | ||
brainfuck | ||
bytecode | ||
cps | ||
ecmascript | ||
elisp | ||
scheme | ||
tree-il | ||
value | ||
bytecode.scm | ||
cps.scm | ||
tree-il.scm |