-
Notifications
You must be signed in to change notification settings - Fork 13.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Simplify ABI story #10049
Labels
Milestone
Comments
Nominating |
1.0, backcompat |
Merged
alexcrichton
added a commit
to alexcrichton/rust
that referenced
this issue
Nov 8, 2013
This adds an other ABI option which allows a custom selection over the target architecture and OS. The only current candidate for this change is that kernel32 on win32 uses stdcall, but on win64 it uses the cdecl calling convention. Otherwise everywhere else this is defined as using the Cdecl calling convention. cc rust-lang#10049 Closes rust-lang#8774
bors
added a commit
that referenced
this issue
Nov 9, 2013
This adds an other ABI option which allows a custom selection over the target architecture and OS. The only current candidate for this change is that kernel32 on win32 uses stdcall, but on win64 it uses the cdecl calling convention. Otherwise everywhere else this is defined as using the Cdecl calling convention. cc #10049 Closes #8774
alexcrichton
added a commit
to alexcrichton/rust
that referenced
this issue
Nov 9, 2013
This adds an other ABI option which allows a custom selection over the target architecture and OS. The only current candidate for this change is that kernel32 on win32 uses stdcall, but on win64 it uses the cdecl calling convention. Otherwise everywhere else this is defined as using the Cdecl calling convention. cc rust-lang#10049 Closes rust-lang#8774
bors
added a commit
that referenced
this issue
Nov 9, 2013
This adds an other ABI option which allows a custom selection over the target architecture and OS. The only current candidate for this change is that kernel32 on win32 uses stdcall, but on win64 it uses the cdecl calling convention. Otherwise everywhere else this is defined as using the Cdecl calling convention. cc #10049 Closes #8774
alexcrichton
added a commit
to alexcrichton/rust
that referenced
this issue
Apr 2, 2014
This change removes the AbiSet from the AST, converting all usage to have just one Abi value. The current scheme selects a relevant ABI given a list of ABIs based on the target architecture and how relevant each ABI is to that architecture. Instead of this mildly complicated scheme, only one ABI will be allowed in abi strings, and pseudo-abis will be created for special cases as necessary. For example the "system" abi exists for stdcall on win32 and C on win64. Closes rust-lang#10049
bors
added a commit
that referenced
this issue
Apr 3, 2014
This change removes the AbiSet from the AST, converting all usage to have just one Abi value. The current scheme selects a relevant ABI given a list of ABIs based on the target architecture and how relevant each ABI is to that architecture. Instead of this mildly complicated scheme, only one ABI will be allowed in abi strings, and pseudo-abis will be created for special cases as necessary. For example the "system" abi exists for stdcall on win32 and C on win64. Closes #10049
alexcrichton
added a commit
to alexcrichton/rust
that referenced
this issue
Apr 3, 2014
This change removes the AbiSet from the AST, converting all usage to have just one Abi value. The current scheme selects a relevant ABI given a list of ABIs based on the target architecture and how relevant each ABI is to that architecture. Instead of this mildly complicated scheme, only one ABI will be allowed in abi strings, and pseudo-abis will be created for special cases as necessary. For example the "system" abi exists for stdcall on win32 and C on win64. Closes rust-lang#10049
Jarcho
pushed a commit
to Jarcho/rust
that referenced
this issue
Feb 26, 2023
fix [`needless_return`] incorrect suggestion when returning if sequence fixes: rust-lang#10049 --- changelog: [`needless_return`]: fix incorrect suggestion on if sequence
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I've come to believe the ABI scheme I cooked up is overly complicated. The current scheme involves a set of ABIs, some of which are "platform specific" and some of which are not, and we select the most specific one we can for a given target. I'd prefer to say that an ABI string selects exactly one ABI, and then define some meta-ABIs that may vary by platform. In addition, some ABIs may be specific to a platform, in which case invocations of functions with that ABI cannot be compiled to other platforms.
I'm thinking of a set of ABI strings like:
C
-- a meta descriptor representing "C-like conventions", as todayfastcall
-- LLVM's fastcallstdcall
-- win32 specificsystem
--stdcall
on windows,C
elsewhere (borrowed from D)aapcs
-- ARM specificThe text was updated successfully, but these errors were encountered: