Fix Memory64Lowering table.copy size wrapping for mixed tables #8319
+69
−1
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.
Summary
visitTableCopywrappedcurr->sizeusing only the dest table's type, but the wasm spec (andchild-typer.h) defines the size type as i64 only when both source and dest tables are 64-bit. When copying between a 64-bit and a 32-bit table, the size is i32, but wrapping checks only the dest table — causing an assertion failure (assert(ptr->type == Type::i64)) when dest is 64-bit but source is 32-bit.Fix: Check both tables before wrapping the size operand, matching the type logic in
child-typer.h.Split from #8311 per review feedback.
Test plan
memory64-lowering-table-copy.wastcovering: