[cfe-commits] r161362 - in /cfe/trunk: include/clang/Basic/DiagnosticSemaKinds.td lib/Sema/SemaExpr.cpp lib/Sema/SemaExprMember.cpp test/SemaObjC/warn-direct-ivar-access.m

Jordan Rose jordan_rose at apple.com
Mon Aug 6 17:42:44 PDT 2012


On Aug 6, 2012, at 17:37 , Fariborz Jahanian <fjahanian at apple.com> wrote:

> 
> On Aug 6, 2012, at 5:09 PM, Jordan Rose wrote:
> 
>> Why does this only warn under non-GC?
> 
> I don't know. This is an old GCC option and brought it over as-is to clang. I don't have the original gcc radar
> to look for the rational. Could be that under GC it is safe to do direct assignment while with the advent of
> properties, users warn to catch such accesses and use the property syntax which controls the ivar
> access with its own APIs (think atomic vs non-atomic).

The same is true under ARC, though. If this is a safety warning, it only really needs to be on for MRC and __unsafe_unretained ivars. I think it's more often a consistency thing, though: if you want Key-Value Observing to work right you have to use the properties.

As a heuristic, people often access ivars directly in -init methods and in -dealloc, since properties may be overridden by subclasses. If we were going to split the difference on the warnings, it could be on by default everywhere except -init and -dealloc methods.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20120806/59c7bd8b/attachment.html>


More information about the cfe-commits mailing list