1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-04-30 03:40:34 +02:00
guile/module/language
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
..
brainfuck Add compiler chooser implementation; fix bugs with previous commit 2020-05-08 22:56:37 +02:00
bytecode linker: Do not store entire ELF in memory when writing to a file. 2023-01-17 17:49:05 +01:00
cps Run sigbits fixpoint based on use/def graph, not cfg 2024-09-26 11:14:52 +02:00
ecmascript Deprecate passing a non-zero size to make-module 2019-09-27 22:57:38 +02:00
elisp Fix typos throughout codebase. 2024-05-06 11:51:53 +02:00
scheme Read-in-scheme replaces boot "read" definition 2021-03-03 17:08:55 +01:00
tree-il Add a workaround for pre-3.0.10 incorrect inlinable exports 2024-09-23 14:07:53 +02:00
value Add 'for-humans?' flag to <language> specifications. 2013-01-27 10:16:40 -05:00
wisp Add language/wisp, Wisp tests, and SRFI-119 documentation 2024-06-01 11:50:16 +02:00
bytecode.scm Add sign-extending make-immediate instruction 2020-07-30 17:36:11 +02:00
cps.scm Add new $calli expression type. 2023-08-17 14:16:12 +02:00
tree-il.scm Use tree-il-srcv instead of tree-il-src 2023-06-19 13:53:01 +02:00
wisp.scm wisp: Use uninterned symbols instead of UUIDs. 2024-06-01 11:50:16 +02:00