Thanks for the feedback!

I will look at reducing the state stored by SuperDeallocState.

I will also add stack hints like "[super dealloc] was called here first" for 
the first call, and "[super dealloc] was called a second time here", or similar.


================
Comment at: lib/StaticAnalyzer/Checkers/ObjCSuperDeallocChecker.cpp:156
@@ +155,3 @@
+
+  // FIXME: A callback should disable checkers at the start of functions.
+  if (!shouldRunOnFunctionOrMethod(
----------------
zaks.anna wrote:
> Is this done for performance purposes? Can [super dealloc] be called from 
> functions? isSuperDeallocMessage check seems faster.
This check was modeled after ObjCSelfInitChecker::checkPostObjCMessage() in 
ObjCSelfInitChecker.cpp.

Heh, I see.  The checks in shouldRunOnFunctionOrMethod() are redundant because 
we're already passed a reference to an ObjCMethodCall.

I don't believe [super dealloc] is valid inside a plain C function context.


================
Comment at: lib/StaticAnalyzer/Checkers/ObjCSuperDeallocChecker.cpp:161
@@ +160,3 @@
+
+  // Check for [super dealloc] method call.
+  if (isSuperDeallocMessage(M)) {
----------------
zaks.anna wrote:
> It would be better to do an early return here as well, unless you plan to 
> expand this for handling other calls.
> if (!isSuperDeallocMessage(M))
>   return;
Sure, will fix.

================
Comment at: lib/StaticAnalyzer/Checkers/ObjCSuperDeallocChecker.cpp:182
@@ +181,3 @@
+  SymbolRef SelfSymbol = M.getSelfSVal().getAsSymbol();
+  const SuperDeallocState *SDState = 
State->get<CalledSuperDealloc>(SelfSymbol);
+  if (!SDState)
----------------
zaks.anna wrote:
> These should be guarded on isSuperDeallocMessage. Otherwise, we would do a 
> lookup every time we see a method call.
Got it!  Will fix.

http://reviews.llvm.org/D5238

EMAIL PREFERENCES
  http://reviews.llvm.org/settings/panel/emailpreferences/



_______________________________________________
cfe-commits mailing list
cfe-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to