Skip to content
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

Closed
nikomatsakis opened this issue Oct 24, 2013 · 2 comments
Closed

Simplify ABI story #10049

nikomatsakis opened this issue Oct 24, 2013 · 2 comments
Labels
A-codegen Area: Code generation A-type-system Area: Type system
Milestone

Comments

@nikomatsakis
Copy link
Contributor

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 today
  • fastcall -- LLVM's fastcall
  • stdcall -- win32 specific
  • system -- stdcall on windows, C elsewhere (borrowed from D)
  • aapcs -- ARM specific
  • etc
@nikomatsakis
Copy link
Contributor Author

Nominating

@catamorphism
Copy link
Contributor

1.0, backcompat

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
Labels
A-codegen Area: Code generation A-type-system Area: Type system
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants