zero alloc: assume that works with inlining #1714
Closed
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.
This PR propagates
[@zero_alloc assume]
annotation from a function to its body, piggybacking onDebuginfo.t
. The PR starts with a bit of refactoring to make it easier to add a field toDebuginfo.t
. I'll be happy to separate the refactoring commit into another PR.The propagation happens in
middle_end
during translation fromLambda
and boils down to adding a new argument toDebuginfo.from_location
and to the "environment" of translation.This PR a draft because it looks too complicated. The change is separate for each middle end, and I am not sure if I have all the places updated correctly. Is there a better way? Would it be better to add another pass on Lambda dedicated to propagating this information?
Tested on small examples manually with all 3 middle ends. TODO: test on larger examples.