Anastasia added a comment. In D64083#1583110 <https://reviews.llvm.org/D64083#1583110>, @rjmccall wrote:
> In D64083#1583109 <https://reviews.llvm.org/D64083#1583109>, @rjmccall wrote: > > > Okay, so it sounds like *from the language perspective* all block pointers > > are actually pointers into `__generic`, and the thing with literals is just > > an implementation detail that's been inappropriately expressed in the AST. > > The better implementation strategy is to make sure that (1) the AST uses > > the size/alignment of a `__generic` pointer for a block pointer and (2) > > IRGen implicitly converts block literals to `__generic` pointers when it > > emits them, and then there's no such thing as a block pointer to a > > qualified type. > > > This is actually important to get right in C++ because of `auto` and > templates; you really don't want non-generic block pointer types to become an > expressible thing in the language. Yes, I agree. Right now it fails but the diagnostic is wrong. In D64083#1583110 <https://reviews.llvm.org/D64083#1583110>, @rjmccall wrote: > In D64083#1583109 <https://reviews.llvm.org/D64083#1583109>, @rjmccall wrote: > > > Okay, so it sounds like *from the language perspective* all block pointers > > are actually pointers into `__generic`, and the thing with literals is just > > an implementation detail that's been inappropriately expressed in the AST. > > The better implementation strategy is to make sure that (1) the AST uses > > the size/alignment of a `__generic` pointer for a block pointer and (2) > > IRGen implicitly converts block literals to `__generic` pointers when it > > emits them, and then there's no such thing as a block pointer to a > > qualified type. > > > This is actually important to get right in C++ because of `auto` and > templates; you really don't want non-generic block pointer types to become an > expressible thing in the language. I agree. I have opened a bug to follow up on this: https://bugs.llvm.org/show_bug.cgi?id=42621. We can still simplify the code in this patch for now, although I expect in the future it won't be needed. Repository: rL LLVM CHANGES SINCE LAST ACTION https://reviews.llvm.org/D64083/new/ https://reviews.llvm.org/D64083 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits