diff options
author | Ted Kremenek <kremenek@apple.com> | 2012-05-08 00:12:09 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2012-05-08 00:12:09 +0000 |
commit | c91fdf662d4f453ce9bb975b25cec348d0ced9c6 (patch) | |
tree | 3f8c654b7b2b90a11b17098b5da829e44aae3074 /lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp | |
parent | 9b79fc9c57dc9d541c2a5737c3e2c24cc68d485d (diff) |
Teach the static analyzer that NSLog() and friends do not hold on to object references (thus extending their lifetime).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@156346 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp')
-rw-r--r-- | lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp b/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp index 325a7657e6..aa392b0860 100644 --- a/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp +++ b/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp @@ -648,6 +648,10 @@ public: return getPersistentSummary(Summ); } + const RetainSummary *getDoNothingSummary() { + return getPersistentSummary(RetEffect::MakeNoRet(), DoNothing, DoNothing); + } + const RetainSummary *getDefaultSummary() { return getPersistentSummary(RetEffect::MakeNoRet(), DoNothing, MayEscape); @@ -997,6 +1001,8 @@ RetainSummaryManager::getSummary(const FunctionDecl *FD, // libdispatch finalizers. ScratchArgs = AF.add(ScratchArgs, 1, StopTracking); S = getPersistentSummary(RetEffect::MakeNoRet(), DoNothing, DoNothing); + } else if (FName.startswith("NSLog")) { + S = getDoNothingSummary(); } else if (FName.startswith("NS") && (FName.find("Insert") != StringRef::npos)) { // Whitelist NSXXInsertXX, for example NSMapInsertIfAbsent, since they can |