Load pointer and length of a list before creating the block for the deallocation loop. #997
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Currently the block for the deallocation loop gets generated before the pointer and the length of the list.
In the haskell generator this leads to the problem where the variables that store the pointer/length are pushed to the inner block rather than the outer one (since I always just push all code to the last block on the “block-stack”) making them inaccessible for the loop setup itself. Both Rust and C do not store the pointer/length in variables, just pushing the code to load them onto the results directly.
This solves that issue by simply getting them before the inner block is created. I don’t think this will break any other generators, tho I can’t test most of them on my machine.
Alternatively I could keep track of the current active block manually rather than assuming it’s the last one but I would prefer this solution instead if possible.