Mark extra fastcall return regs as llvm ABI extension by bjorn3 · Pull Request #14375 · bytecodealliance/wasmtime · GitHub
Skip to content

Mark extra fastcall return regs as llvm ABI extension - #14375

Open
bjorn3 wants to merge 2 commits into
bytecodealliance:mainfrom
bjorn3:mark_fastcall_abi_ext
Open

bjorn3 wants to merge 2 commits into
bytecodealliance:mainfrom
bjorn3:mark_fastcall_abi_ext

Conversation

@bjorn3

@bjorn3 bjorn3 commented Sep 22, 2026

Copy link
Copy Markdown
Contributor

The official Windows ABI only uses a single integer or a single vector return register.

@bjorn3
bjorn3 requested a review from a team as a code owner September 22, 2026 09:02
@bjorn3
bjorn3 requested review from fitzgen and removed request for a team September 22, 2026 09:02
@bjorn3
bjorn3 force-pushed the mark_fastcall_abi_ext branch from 1a9f103 to 0e60530 Compare September 22, 2026 09:04
@github-actions github-actions Bot added cranelift Issues related to the Cranelift code generator cranelift:area:x64 Issues related to x64 codegen labels Sep 22, 2026

@fitzgen fitzgen left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks!

@fitzgen
fitzgen added this pull request to the merge queue Sep 22, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Sep 22, 2026
@fitzgen

fitzgen commented Sep 24, 2026

Copy link
Copy Markdown
Member

The windows_fastcall call conv doesn't support multi-return functions
without an ABI extension.
colinhacks added a commit to amikofalvy/frizz that referenced this pull request Oct 15, 2026
…ancelled

A merge group fails fast: one job goes red and the queue cancels the rest.
`failedCheckNames` counts a cancellation as a failure and keeps rollup
order, so the eight names the clause has room for were cancellations and
the job that actually failed was folded into "+N more".

Measured on bytecodealliance/wasmtime#14375, dropped for `failed_checks` on
2026-09-22: 26 cancelled, 1 failed (Test MSVC x86_64 (1/8)), listed 14th.
The wake named eight ASAN and MPK jobs that never ran to the end, which is
exactly where a worker would go looking. The exit clause now lists the
non-cancelled failures first; the head's own CI wake is unchanged.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
colinhacks added a commit to colinhacks/frizz that referenced this pull request Oct 15, 2026
…61)

* fix(pr-watch): wake when a PR leaves the merge queue without merging

A thread parked on a queued PR slept through the PR bouncing out of the
merge queue: GitHub removed it for failed_checks, and a human noticed
2h25m later. The queue tests a separate merge-group commit, so the PR
head's checks stayed green and its merge state CLEAN: nothing the
watcher read had moved.

The batched PR query now also reads isDraft, mergeQueueEntry and the
last RemovedFromMergeQueue / AutoMergeDisabled timeline events, with the
merge group's own check rollup off each removal's beforeCommit (still 1
GraphQL point per PR). A fresh exit wakes the worker with GitHub's
reason, the failing merge-group checks, and, when the PR is not back in
the queue, what to do next. A PR turned back into a draft wakes it too.

Same class: a watched PR or issue GitHub stops resolving (deleted,
transferred, access lost) logged NOT_FOUND forever while the thread
waited out a for: of up to a year. After 30 minutes of NOT_FOUND the
watcher now settles and tells its worker.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(pr-watch): only consecutive NOT_FOUND answers settle a watcher

The not-found clock kept running through polls that never reached GitHub: a rate-limit deferral or
a network error left it alone, so one NOT_FOUND blip followed by half an hour of backoff settled the
watcher. Any outcome other than another NOT_FOUND now restarts the run.

The gone wake also pointed at `mcp__frizz__watch_pr`, which the worker prompt never teaches; it now
names `frizzctl watch-pr add` / `frizzctl watch-issue add`, as the expiry wake does.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(pr-watch): tell auto-merge going off apart from a queue bounce

The paragraph under a merge-path exit always explained the merge queue: the
PR was tested merged onto its base in a separate `gh-readonly-queue/…`
commit, "so those failures do not show on the PR head". That is the point
of a queue bounce, but the same paragraph went out when auto-merge was
switched off in a repository with no queue at all. There it names a commit
and failures that do not exist (microsoft/vscode#339642, cli/cli#13665 and
vercel/next.js#99677 all carry such an exit today, none of them queued).

The report now carries which road the PR left. A queue exit keeps the
paragraph as it was; auto-merge alone says to find out why it went off and
gives the command that turns it back on. A re-minted report that folds
both keeps the queue wording, since it says everything the other does.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(pr-watch): name the merge group's failed job before the ones it cancelled

A merge group fails fast: one job goes red and the queue cancels the rest.
`failedCheckNames` counts a cancellation as a failure and keeps rollup
order, so the eight names the clause has room for were cancellations and
the job that actually failed was folded into "+N more".

Measured on bytecodealliance/wasmtime#14375, dropped for `failed_checks` on
2026-09-22: 26 cancelled, 1 failed (Test MSVC x86_64 (1/8)), listed 14th.
The wake named eight ASAN and MPK jobs that never ran to the end, which is
exactly where a worker would go looking. The exit clause now lists the
non-cancelled failures first; the head's own CI wake is unchanged.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* test(pr-watch): pin the not-found settle for an issue watcher too

The settle after 30 minutes of NOT_FOUND runs for issue watchers as well
(the issue branch of the poll feeds the same clock, and the check comes
before the issue is evaluated), but only the PR case was tested. This pins
the issue one: no wake inside the grace period, then one wake that names
`frizzctl watch-issue add`, and the watcher settles. Disabling the issue
branch's tracking fails it.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix(pr-watch): explain the merge group's commit only when it failed the PR

The previous commit kept the merge-queue sentence for every queue exit.
It still read wrong for a queue that dropped the PR without failing it:
bytecodealliance/wasmtime#14647, removed today over a merge conflict, was
told that "those failures do not show on the PR head" when nothing had
failed.

Three next steps now, most specific first: a queue that failed the PR
(GitHub's `failed_checks`, or a failed check in the merge group, as when
someone removes a red PR by hand) explains the `gh-readonly-queue/…`
commit; any other queue exit says to find out why it left and re-queue;
auto-merge going off says to find out why and turn it back on. A
re-minted report keeps the most specific of the reports it folds.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: Colin McDonnell <3084745+colinhacks@users.noreply.github.com>

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

cranelift:area:x64 Issues related to x64 codegen cranelift Issues related to the Cranelift code generator

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants