rjmccall added a comment. In https://reviews.llvm.org/D49718#1173883, @ahatanak wrote:
> Address review comments. > > I think I should be able to merge pushBlockObjectRelease and > enterByrefCleanup, but the BlockFieldFlags that are passed are different. We > set BLOCK_FIELD_IS_WEAK in addition to BLOCK_FIELD_IS_BYREF when > isObjCGCWeak() returns true and we are emitting the copy/dispose helper > functions, but when enterByrefCleanup is called from EmitAutoVarCleanups, > only BLOCK_FIELD_IS_BYREF is set. Heh, okay. It looks like the runtime doesn't do anything different, but I think it's probably more correct to always pass `BLOCK_FIELD_IS_WEAK` when destroying a `__weak` block in GC modes. > In https://reviews.llvm.org/D49718#1173068, @rjmccall wrote: > >> I don't think it makes any difference because we shouldn't be emitting >> cleanup paths when exceptions are disabled. I don't think there's an >> intended difference in semantics between those two destructor-cleanup paths, >> at least. > > > OK, I see. > > If it doesn't make any difference, I think I can push NormalAndEHCleanup > unconditionally when copying a BlockObject capture instead of pushing > NormalCleanup when EH is disabled. I made that change in the updated patch. Ok. Thanks, I like how it looks now. Repository: rC Clang https://reviews.llvm.org/D49718 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits