Skip to content

Read and write label names from the name section - #9166

Open
vouillon wants to merge 3 commits into
WebAssembly:mainfrom
vouillon:label-names
Open

vouillon wants to merge 3 commits into
WebAssembly:mainfrom
vouillon:label-names

Conversation

@vouillon

Copy link
Copy Markdown
Contributor

This is the only section of the Extended Name Section proposal which is currently not handled.

Read label names, and use the names when building the IR. Blocks and
loops can hold names directly. `if`, `try` and `try_table` cannot, so
for them the name is only a hint: we use it when a branch to the scope
means we have to create a wrapper block anyhow, and otherwise drop it,
so that reading these names never changes the shape of the IR.
@vouillon
vouillon requested a review from a team as a code owner September 28, 2026 17:36
@vouillon
vouillon requested review from kripken and removed request for a team September 28, 2026 17:36
Write the label subsection (id 3) next to the function and local names
when debug info is enabled.

Only explicit names are written: the ones that came from the text
format, from the name section, or through the C API, and not the ones we
generate ourselves. Functions therefore gain an `explicitLabelNames`
set, filled by IRBuilder when a label comes from outside rather than
from makeFresh(). Keeping this next to `localNames` and `debugLocations`
rather than on the expressions themselves is how the rest of our debug
info is stored, and it has two advantages: ExpressionAnalyzer never sees
it, so two otherwise-identical blocks cannot stop comparing equal
because of debug info; and since label names are unique within a
function, it keeps identifying the right labels as optimizations replace
the expressions that carry them.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant