![]() Fix problem with once-use tracking and delayed variable-use marking that is performed for local function bodies. A delayed variable-use registration might happen after a once-used variable is replaced by its use. This scenario is difficult to provoke, because the optimizer has to first decide not to move a once-use function, and in a latter pass decide to move it after all. There's not enough information to retract the tentative use plus its transitive implications. The solution is to avoid the generic once-use layer for `lambda` forms whose uses are delayed (and that likely has a good effect on inlining anyway). The other half of the solution is to avoid transitive use marking on a once-used variable whose expression has been moved (and there are no transitive things to skip, because that expression isn't a `lambda` form). |
||
---|---|---|
.. | ||
mzlib | ||
tests/racket | ||
info.rkt | ||
LICENSE.txt |