[PATCH] D24792: [analyzer] Fix crash in RetainCountChecker::checkEndFunction

Anna Zaks via cfe-commits cfe-commits at lists.llvm.org
Wed Sep 21 14:34:28 PDT 2016

zaks.anna added a comment.

One approach would be to skip analyzing the functions which we model as top level.

- a/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp

+++ b/lib/StaticAnalyzer/Frontend/AnalysisConsumer.cpp
@@ -688,6 +688,9 @@ void AnalysisConsumer::ActionExprEngine(Decl *D, bool ObjCGCEnabled,

  if (!Mgr->getAnalysisDeclContext(D)->getAnalysis<RelaxedLiveVariables>())

+  if (Mgr->getAnalysisDeclContext(D)->isBodyAutosynthesized())
+    return;

  ExprEngine Eng(*Mgr, ObjCGCEnabled, VisitedCallees, &FunctionSummaries,IMode);

The main downside is that we will not be analyzing the bodies of functions that are being modeled at all, so we won't find bugs in them. On the other hand, those definitions should be coming from system headers anyway.

Another approach is along the lines of changing the AnalysisDeclContext::getBody() so that it does not choose model over a real body depending on context. It might be less clean and maintainable.



More information about the cfe-commits mailing list