1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-15 10:10:21 +02:00
guile/module/language/cps
Andy Wingo aff9ac9688 Run sigbits fixpoint based on use/def graph, not cfg
* module/language/cps/specialize-numbers.scm (sigbits-ref): New helper.
(invert-graph*): New helper.
(compute-significant-bits): When visiting a term changes computed
needed-bits for one of its definitions, we need to revisit the variables
that contributed to its result (the uses), because they might need more
bits as well.  Previously we were doing this by enqueueing predecessors
to the term, which worked if the uses were defined in predecessors, or
if all defining terms were already in the worklist, which is the case
without loops.  But with loops, when revisiting a term, you could see
that it causes sigbits to change, enqueue its predecessors, but then the
predecessors don't change anything and the fixpoint stops before
reaching the definitions of the variables we need.  So instead we
compute the use-def graph and enqueue defs directly.
2024-09-26 11:14:52 +02:00
..
guile-vm CPS conversion does not introduce "throw" 2023-11-23 10:25:02 +01:00
closure-conversion.scm Add new $calli expression type. 2023-08-17 14:16:12 +02:00
compile-bytecode.scm Add logand/immediate, ulogand/immediate primcalls 2023-11-20 13:43:47 +01:00
contification.scm Add new $calli expression type. 2023-08-17 14:16:12 +02:00
cse.scm Add new $calli expression type. 2023-08-17 14:16:12 +02:00
dce.scm Add new $calli expression type. 2023-08-17 14:16:12 +02:00
devirtualize-integers.scm Add new $calli expression type. 2023-08-17 14:16:12 +02:00
dump.scm Add new $calli expression type. 2023-08-17 14:16:12 +02:00
effects-analysis.scm Fix effects analysis: field writes clobber object reads 2024-03-20 11:50:53 +01:00
elide-arity-checks.scm New pass: elide-arity-checks 2021-04-21 22:41:12 +02:00
graphs.scm Fix typos throughout codebase. 2023-07-16 22:09:01 +02:00
guile-vm.scm Allow targets to preclude unbound variables 2023-11-23 12:31:38 +01:00
intmap.scm Fix intmap-intersect edge case 2019-06-11 12:56:23 +02:00
intset.scm Fix intset-fold-right on transient intsets 2024-08-15 12:18:02 +02:00
licm.scm Add $switch CPS term kind 2020-08-12 23:30:08 +02:00
optimize.scm Introduce target-runtime parameter for backend-specific CPS lowering 2023-08-17 14:16:12 +02:00
peel-loops.scm Add new $calli expression type. 2023-08-17 14:16:12 +02:00
prune-top-level-scopes.scm cache-current-module, etc use immediate primcall parameters 2017-11-05 15:00:16 +01:00
renumber.scm Add new $calli expression type. 2023-08-17 14:16:12 +02:00
return-types.scm Add new pass to optimize away return value count checks 2021-11-15 15:32:54 +01:00
rotate-loops.scm Add new $calli expression type. 2023-08-17 14:16:12 +02:00
self-references.scm Add new $calli expression type. 2023-08-17 14:16:12 +02:00
simplify.scm Add new $calli expression type. 2023-08-17 14:16:12 +02:00
slot-allocation.scm More precise value representations for bv-contents, $code 2023-08-17 14:16:12 +02:00
spec.scm Define new "lowering" phase in compiler 2020-05-08 17:07:56 +02:00
specialize-numbers.scm Run sigbits fixpoint based on use/def graph, not cfg 2024-09-26 11:14:52 +02:00
specialize-primcalls.scm Compiler allocates boxed flonums in unmarked space 2019-08-26 10:19:24 +02:00
split-rec.scm Add new $calli expression type. 2023-08-17 14:16:12 +02:00
switch.scm Allow target runtime to override symbol hash 2023-11-20 14:23:14 +01:00
type-checks.scm $branch is now a distinct CPS term type 2018-01-03 16:16:39 +01:00
type-fold.scm Fix bug lowering logand/immediate to ulogand/immediate 2023-11-20 16:45:35 +01:00
types.scm Tighten up range inference for scm->u64/truncate 2024-09-25 17:27:17 +02:00
utils.scm Add logand/immediate, ulogand/immediate primcalls 2023-11-20 13:43:47 +01:00
verify.scm Add new $calli expression type. 2023-08-17 14:16:12 +02:00
with-cps.scm Add missing files 2015-07-22 18:27:37 +02:00