IRGen: Fix out-of-order task_dealloc with parameter pack metadata #81516
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.
We deallocate an instruction's packs at points where no further control flow path uses the value. In the case of an
alloc_stack
, this will be right after thedealloc_stack
. Thus, ifalloc_stack
allocates some packs to build type metadata for a tuple type that contains a pack, and then proceeds to allocate a value large enough to hold the tuple, we will free the second allocation first, before we free the pack, as expected.However, after stack allocating the value,
alloc_stack
does some further work to emit debug info. This could result inemission of additional metadata packs.
Split up the debug info emission into two parts; the first we do before we perform the stack allocation, the rest we do after.