rjmccall added a comment.

In https://reviews.llvm.org/D49718#1174281, @ahatanak wrote:

> Merge pushBlockObjectRelease and enterByrefCleanup.
>
> In https://reviews.llvm.org/D49718#1174113, @rjmccall wrote:
>
> > 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.
>
>
> I tried passing `BLOCK_FIELD_IS_WEAK | BLOCK_FIELD_IS_BYREF` to the call to 
> enterByrefCleanup in EmitAutoVarCleanups, but it looks like 
> test/CodeGenObjC/blocks.m fails if I do so. The test was committed in r125823 
> and there is a comment that says " We're not supposed to pass 
> BLOCK_FIELD_IS_WEAK here".
>
> http://lists.llvm.org/pipermail/cfe-commits/Week-of-Mon-20110214/038996.html
>
> Should we change the check in the test?


Thanks for the archaeology; that's a very good question.  It looks to me like 
that comment was unrelated to the functionality change made by that patch, and 
nothing in the radar history explains it, either.  I don't see anything in the 
runtime source which suggests that it's wrong to pass `BYREF|WEAK` to 
`Block_object_dispose`.  Going way back, it does seem to have been necessary 
under GC to pass `BYREF|WEAK` for `Block_object_assign`, but the runtime never 
did anything special with the flag for `Block_object_dispose`; it just always 
treated it exactly the same as `BYREF` alone.

I think it's fine to just change the test.


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

Reply via email to