> On Mar 22, 2016, at 12:06 PM, Bryan Chan <bryan.c...@ca.ibm.com> wrote:
>
> jgr...@apple.com wrote on 2016-03-22 02:37:47 PM:
>
> > The runtime functions are hacked in various unsavory ways to give
> > them Swift-like calling conventions. Many of them also have
> > important semantics that the compiler needs to be aware of, so if
> > they aren't exported as standard library API in some way, you really
> > shouldn't interact with them directly.
> > (swift_class_getInstanceExtents happens to be OK, but what are you
> > trying to do with it?)
>
> I am trying to build Swift on a different architecture (s390x). This
> function was causing crashes due to the ABI mismatch, and I also
> found that the issue is not 100% fixed on x86 either, so I wondered
> if the community has an opinion on the right way to deal with this
> in the runtime, or if the answer is simply "don't do this for
> 3-scalar returns".
>
Yeah, there's no good way right now to return three scalars from Clang.
swift_class_getInstanceExtents and a few other runtime entrypoints like
allocBox and allocError use the `TwoWordPair::Return` hack to use types that
happen to return in two registers on i386, x86_64, armv7, and arm64. If s390x's
C ABI doesn't define any such types, you might need to wait for proper support
for Swift calling conventions in Clang. I believe it's on John McCall's
near-term todo list to do that.
-Joe
_______________________________________________
swift-dev mailing list
swift-dev@swift.org
https://lists.swift.org/mailman/listinfo/swift-dev