Author: kremenek
Date: Tue Jul 15 18:04:27 2008
New Revision: 53647
URL: http://llvm.org/viewvc/llvm-project?rev=53647&view=rev
Log:
For the MissingDealloc check, don't treat IBOutlet ivars as being needed to be
released
Added:
cfe/trunk/test/Analysis/IBOutlet.m
Modified:
cfe/trunk/lib/Analysis/CheckObjCDealloc.cpp
Modified: cfe/trunk/lib/Analysis/CheckObjCDealloc.cpp
URL:
http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Analysis/CheckObjCDealloc.cpp?rev=53647&r1=53646&r2=53647&view=diff
==============================================================================
--- cfe/trunk/lib/Analysis/CheckObjCDealloc.cpp (original)
+++ cfe/trunk/lib/Analysis/CheckObjCDealloc.cpp Tue Jul 15 18:04:27 2008
@@ -60,9 +60,11 @@
for (ObjCInterfaceDecl::ivar_iterator I=ID->ivar_begin(), E=ID->ivar_end();
I!=E; ++I) {
- QualType T = (*I)->getType();
+ ObjCIvarDecl* ID = *I;
+ QualType T = ID->getType();
- if (T->isPointerType() || T->isObjCQualifiedIdType()) {
+ if ((T->isPointerType() || T->isObjCQualifiedIdType()) &&
+ ID->getAttr<IBOutletAttr>() == 0) { // Skip IBOutlets.
containsPointerIvar = true;
break;
}
Added: cfe/trunk/test/Analysis/IBOutlet.m
URL:
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Analysis/IBOutlet.m?rev=53647&view=auto
==============================================================================
--- cfe/trunk/test/Analysis/IBOutlet.m (added)
+++ cfe/trunk/test/Analysis/IBOutlet.m Tue Jul 15 18:04:27 2008
@@ -0,0 +1,20 @@
+// RUN: clang -warn-objc-missing-dealloc
'-DIBOutlet=__attribute__((iboutlet))' %s --verify
+
+#ifndef IBOutlet
+#define IBOutlet
+#endif
+
[EMAIL PROTECTED] NSWindow;
+
[EMAIL PROTECTED] NSObject {}
+- (void)dealloc;
[EMAIL PROTECTED]
+
[EMAIL PROTECTED] A : NSObject {
+IBOutlet NSWindow *window;
+}
[EMAIL PROTECTED]
+
[EMAIL PROTECTED] A // no-warning
[EMAIL PROTECTED]
+
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits