theraven requested changes to this revision.
theraven added a comment.
This revision now requires changes to proceed.

I'm broadly in favour of this change, but with the GNUstep ABIs this is an 
ABI-breaking change and so should not be on by default.  The type encoding 
leaks into the ABI in two ways:

- Dispatch is dependent on type, which avoids some stack corruption bugs on 
NeXT-style runtimes.  This means that the types of the selector in the caller 
and the selector in the method definition must match.  I don't see a problem 
with turning this change off for this specific case, because it's incredibly 
rare to pass complex C++ template types as arguments to Objective-C methods.
- The variable that contains the offset of ivars includes the type encoding, so 
that changing the type of a public ivar breaks linkage, rather than just subtly 
corrupting data later.  We could leave this change on for any `@private` or 
`@package` ivars, but changing the type encoding for public ivars will break 
code linking with existing frameworks.

I'm quite happy with this to be opt-in for non-Apple runtimes and opt-out for 
Apple runtimes.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D96816

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

Reply via email to