rjmccall added a comment. In D65256#1601415 <https://reviews.llvm.org/D65256#1601415>, @jordan_rose wrote:
> In D65256#1601410 <https://reviews.llvm.org/D65256#1601410>, @rjmccall wrote: > > > These were unavailable in system headers before because otherwise we > > would've had to make them invalid. Since these unions are no longer > > otherwise invalid, there shouldn't be a problem with allowing them in > > system headers, and in fact making the semantics vary that way seems quite > > problematic. Now, specific *uses* in system headers might still appear to > > be invalid — e.g. an ObjC ivar of type `union { __strong id x; }` — and the > > right behavior is definitely that those use sites should be marked as > > invalid instead of refusing to compile the system header. > > > That's the right answer on paper, but it's source-breaking in practice, for > both Swift and Objective-C. On the Objective-C side, someone could have been > using, say, `glob_t` in a copyable way in their ARC code, never touching the > block field, and it would have been working fine. On the Swift side, we won't > be able to import such a union at all when previously we would have. Sorry, am I missing something? Such a union would've been either ill-formed or unavailable in ARC (depending on where it was declared) before this recent work. Repository: rC Clang CHANGES SINCE LAST ACTION https://reviews.llvm.org/D65256/new/ https://reviews.llvm.org/D65256 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits