Interesting... I thought I saw in the ABI that arm64 structs over 8 bytes would need the stret (for regular arm it was 4 bytes), but maybe Apple is doing something different.  I don't see how it's avoidable for large structs at some point, but maybe there is information in registers which one function can determine the difference at runtime, or something like that.  Anyways, it would be best to put the \#ifdef check in the implementation of the usesSpecialStructureReturn method to just return NO (if that is indeed the correct implementation).