Wasm R2R: emit trailing end after retless BBJ_CALLFINALLY#129449
Open
AndyAyersMS wants to merge 1 commit into
Open
Wasm R2R: emit trailing end after retless BBJ_CALLFINALLY#129449AndyAyersMS wants to merge 1 commit into
AndyAyersMS wants to merge 1 commit into
Conversation
A retless BBJ_CALLFINALLY ending a wasm function/funclet only emits `unreachable` after the indirect call, leaving the body without the required trailing `end` opcode and producing an invalid module (`function body must end with end opcode`). Mirror the BBJ_THROW guard and emit `end` when the block is last or precedes a funclet start. Fixes dotnet#129335. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Member
Author
|
@adamperlin PTAL |
Contributor
|
Tagging subscribers to this area: @JulieLeeMSFT, @jakobbotsch |
Contributor
There was a problem hiding this comment.
Pull request overview
This PR fixes Wasm R2R codegen for the edge case where a retless BBJ_CALLFINALLY ends a wasm function/funclet: it now emits a trailing end opcode (after unreachable) when the block is the last block or immediately precedes a funclet start, preventing invalid wasm modules that fail validation at load time.
Changes:
- Emit
INS_endafterINS_unreachablefor retlessBBJ_CALLFINALLYwhen it terminates a wasm function/funclet body.
adamperlin
approved these changes
Jun 16, 2026
adamperlin
left a comment
Contributor
There was a problem hiding this comment.
This looks good to me!
Open
3 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
A retless BBJ_CALLFINALLY ending a wasm function/funclet only emits
unreachableafter the indirect call, leaving the body without the required trailingendopcode and producing an invalid module (function body must end with end opcode). Mirror the BBJ_THROW guard and emitendwhen the block is last or precedes a funclet start.Fixes #129335.