summaryrefslogtreecommitdiffstats
path: root/clang/lib/StaticAnalyzer/Core/RetainSummaryManager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/StaticAnalyzer/Core/RetainSummaryManager.cpp')
-rw-r--r--clang/lib/StaticAnalyzer/Core/RetainSummaryManager.cpp22
1 files changed, 4 insertions, 18 deletions
diff --git a/clang/lib/StaticAnalyzer/Core/RetainSummaryManager.cpp b/clang/lib/StaticAnalyzer/Core/RetainSummaryManager.cpp
index 2595274f2dd..fc4544f843d 100644
--- a/clang/lib/StaticAnalyzer/Core/RetainSummaryManager.cpp
+++ b/clang/lib/StaticAnalyzer/Core/RetainSummaryManager.cpp
@@ -124,8 +124,10 @@ RetainSummaryManager::generateSummary(const FunctionDecl *FD,
}
const IdentifierInfo *II = FD->getIdentifier();
+ if (!II)
+ return getDefaultSummary();
- StringRef FName = II ? II->getName() : "";
+ StringRef FName = II->getName();
// Strip away preceding '_'. Doing this here will effect all the checks
// down below.
@@ -302,12 +304,6 @@ RetainSummaryManager::generateSummary(const FunctionDecl *FD,
if (FName == "retain")
return getOSSummaryRetainRule(FD);
-
- if (FName == "free")
- return getOSSummaryFreeRule(FD);
-
- if (MD->getOverloadedOperator() == OO_New)
- return getOSSummaryCreateRule(MD);
}
}
@@ -495,11 +491,9 @@ RetainSummaryManager::getSummary(const CallEvent &Call,
case CE_CXXConstructor:
Summ = getFunctionSummary(cast<CXXConstructorCall>(Call).getDecl());
break;
- case CE_CXXAllocator:
- Summ = getFunctionSummary(cast<CXXAllocatorCall>(Call).getDecl());
- break;
case CE_Block:
case CE_CXXDestructor:
+ case CE_CXXAllocator:
// FIXME: These calls are currently unsupported.
return getPersistentStopSummary();
case CE_ObjCMessage: {
@@ -625,14 +619,6 @@ RetainSummaryManager::getOSSummaryReleaseRule(const FunctionDecl *FD) {
}
const RetainSummary *
-RetainSummaryManager::getOSSummaryFreeRule(const FunctionDecl *FD) {
- return getPersistentSummary(RetEffect::MakeNoRet(),
- /*ReceiverEff=*/DoNothing,
- /*DefaultEff=*/DoNothing,
- /*ThisEff=*/Dealloc);
-}
-
-const RetainSummary *
RetainSummaryManager::getOSSummaryCreateRule(const FunctionDecl *FD) {
return getPersistentSummary(RetEffect::MakeOwned(RetEffect::OS));
}
OpenPOWER on IntegriCloud