Skip to content

Cranelift: Get non-tail calls working for the "tail" calling convention#6500

Merged
fitzgen merged 1 commit intobytecodealliance:mainfrom
fitzgen:tail-call-conv-registers-and-such
Jun 9, 2023
Merged

Cranelift: Get non-tail calls working for the "tail" calling convention#6500
fitzgen merged 1 commit intobytecodealliance:mainfrom
fitzgen:tail-call-conv-registers-and-such

Conversation

@fitzgen
Copy link
Copy Markdown
Member

@fitzgen fitzgen commented Jun 1, 2023

No description provided.

@fitzgen fitzgen requested a review from a team as a code owner June 1, 2023 21:22
@fitzgen fitzgen requested review from abrown and removed request for a team June 1, 2023 21:22
@github-actions github-actions bot added cranelift Issues related to the Cranelift code generator cranelift:area:machinst Issues related to instruction selection and the new MachInst backend. cranelift:area:x64 Issues related to x64 codegen labels Jun 1, 2023
@fitzgen fitzgen requested review from cfallin and removed request for abrown June 1, 2023 22:54
Copy link
Copy Markdown
Member

@cfallin cfallin left a comment

Choose a reason for hiding this comment

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

Looks reasonable. Could we add a comment somewhere noting that for now, the Tail convention is treated the same as SystemV, but is expected to change with subsequent patches? With that noted somewhere, LGTM.

@fitzgen
Copy link
Copy Markdown
Member Author

fitzgen commented Jun 1, 2023

Looks reasonable. Could we add a comment somewhere noting that for now, the Tail convention is treated the same as SystemV, but is expected to change with subsequent patches? With that noted somewhere, LGTM.

It is already documented to have unstable ABI, so I think we should be fine on this front?

@fitzgen fitzgen force-pushed the tail-call-conv-registers-and-such branch from 5623677 to 4f5bbab Compare June 1, 2023 23:10
@cfallin
Copy link
Copy Markdown
Member

cfallin commented Jun 2, 2023

Looks reasonable. Could we add a comment somewhere noting that for now, the Tail convention is treated the same as SystemV, but is expected to change with subsequent patches? With that noted somewhere, LGTM.

It is already documented to have unstable ABI, so I think we should be fine on this front?

Sure, that's the public-facing (lack of) guarantee, but it'd be nice to have a note on the current implementation somewhere (and update it when it changes), IMHO.

@fitzgen fitzgen enabled auto-merge June 2, 2023 17:08
@fitzgen fitzgen force-pushed the tail-call-conv-registers-and-such branch from c95b6d4 to 09fceb0 Compare June 2, 2023 21:37
@fitzgen
Copy link
Copy Markdown
Member Author

fitzgen commented Jun 2, 2023

So I added another test for enough arguments that some go on the stack, and found a bug in this PR (I had the appropriate changes in another wip branch, but didn't have them here yet) where the call site was still trying to pop stack arguments, even though the callee already did that.

But then there is s390x. I don't really know s390x's calling convention, but even the simpler test that was already in this PR is failing on s390x with wrong values being returned. The new test is causing segfaults. I need to dig in more, but there is a lot for me to learn here first.

@fitzgen fitzgen disabled auto-merge June 2, 2023 22:51
@fitzgen
Copy link
Copy Markdown
Member Author

fitzgen commented Jun 6, 2023

I'm having a hard time figuring out the details of s390x here, so I am going to disable support for the tail calling convention on s390x (with a loud assertion) to land this PR. We can get s390x working in follow ups.

@fitzgen fitzgen force-pushed the tail-call-conv-registers-and-such branch from 09fceb0 to c30c377 Compare June 6, 2023 20:52
@fitzgen fitzgen enabled auto-merge June 6, 2023 20:54
@fitzgen

This comment was marked as outdated.

@fitzgen fitzgen force-pushed the tail-call-conv-registers-and-such branch from c30c377 to 9980066 Compare June 9, 2023 17:59
@fitzgen fitzgen added this pull request to the merge queue Jun 9, 2023
Merged via the queue into bytecodealliance:main with commit e105aa3 Jun 9, 2023
@fitzgen fitzgen deleted the tail-call-conv-registers-and-such branch June 9, 2023 19:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cranelift:area:machinst Issues related to instruction selection and the new MachInst backend. 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