rjmccall added a comment.

In D89490#2483792 <https://reviews.llvm.org/D89490#2483792>, @aguinet wrote:

> In D89490#2482531 <https://reviews.llvm.org/D89490#2482531>, @rjmccall wrote:
>
>> I'm not calling Wine a niche use-case, I'm calling this feature a niche 
>> use-case.  The lack of this feature has not blocked Wine from being a 
>> successful project.  The feature has to stand on its own and be more broadly 
>> useful than the momentary convenience of a few developers.
>
> I am not saying this **exact** feature is needed by Wine. What I am doing is 
> a parallel with `__attribute__((ms_abi))`, which is exactly the same as this 
> exact feature, but to target the MS ABI from a foreign OS (instead of the 
> Darwin one). Wine just can't work without that attribute.
>
> Let's imagine that, at the time people had wanted to introduce 
> `__attribute__((ms_abi))`, we would have told them "this is a niche, hack 
> <insert compiler representation> instead". Do you really think that would 
> have been a serious solution?
>
> I'd say that we are in a chicken and egg problem: we don't have users for 
> this, but maybe because we don't have the feature. At my company, we already 
> have internal tools that are using this feature, and have lots of hopes it 
> will simplify some of our more complex internal CI and debugging processes. 
> We plan to open source all of this, because we also believe that will also 
> help others with the same kind of issues. But I agree that we might be wrong, 
> I honestly don't know.

I may be over-reacting to the way the patch seemed to be touching on the C++ 
ABI in multiple places.  My understanding is that `ms_abi` is just a 
calling-convention attribute; it's basically "use the (default) calling 
convention that MSVC would use for this function".  If that's all you want, 
then this is reasonable, although I am worried about creating a new attribute 
for every system that Wine chooses to target.

About "darwin": technically, every Apple platform has a different ABI.  Our 
current ARM64 platforms do all agree about things like the calling convention, 
at least if you count newer watches (which use a 32-on-64 ABI in userspace) as 
not ARM64.  That is not true of other architectures, most notably on ARM32, 
where the 32-bit iOS ABI is very different from the armv7k Apple Watch ABI; and 
it is certainly conceivable that Apple might release a new ARM64 platform in 
the future with a different calling convention.  The more technically correct 
and future-proof thing would be to use the OS name (or maybe even the triple!) 
in the attribute, probably as an argument to the attribute, like 
`__attribute__((target_abi("arm64-apple-ios")))`.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D89490/new/

https://reviews.llvm.org/D89490

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to