Repository navigation
check-x86-run.sh: expectations after #412 and #497 - #527
Merged
Merged
Conversation
The -mm=none frame allocator check looked for aligned_alloc(i32, i32). Since #412 ProcessHeapPass renames it on Windows, under every model but gc, to the process-heap allocator __tslang_heap_aligned_alloc, which keeps the 32-bit size_t signature AsyncTargetWidthPass gave it. The check now requires that name with both parameters i32. await_order expected "after await" before "in g", recorded when an await of a void async function did not wait. Since #497 main waits on g()'s token, so "in g" always prints first (300/300 runs, x86 and x64). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2 tasks done
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.
Two failures in the hand-run
tslang/test/check-x86-run.shwere stale expectations, not compiler bugs.x86 IR -mm=none: frame allocator is aligned_alloc(i32, i32)Since #412,
ProcessHeapPassrenamesaligned_allocon Windows, under every memory model but gc, to the process-heap allocator__tslang_heap_aligned_alloc. This is intentional: modules share one heap because coroutine frames are freed across modules.AsyncTargetWidthPassruns first, so the renamed declaration keeps the target's 32-bitsize_t:The check now requires that name with both parameters
i32. The pattern still rejects(i64, i64)and(i32, i64).await_order -mm=gc: expected outputThe expected
start / after await / in gwas recorded when anawaitof a void async function did not wait. Since #497,mainblocks inmlirAsyncRuntimeAwaitTokenuntil the worker emplaces g()'s token, and the worker does that only afterputs("in g"). So the order is now deterministic:start / in g / after await. It printed that in 200/200 x86 runs and 100/100 x64 runs. The expected text and the comment inawait_order.tsare updated.await_order under rc, none and own
Since #419, an async program links without the collector. The exact-output
await_ordercase therefore now runs under-mm=rc,-mm=noneand-mm=ownas well as gc: 100/100 x86 runs each printedstart / in g / after await. The comments saying rc/none fail to link are updated.Test plan
bash tslang/test/check-x86-run.sh __build/tslang/windows-msbuild-2026-release/bin/tslang.exe: all cases ok, includingawait_orderunder gc, rc, none and own. The default-library section was SKIPPED because no x86 default library was present at the worktree path.🤖 Generated with Claude Code