diff options
author | George Karpenkov <ekarpenkov@apple.com> | 2019-01-29 19:29:33 +0000 |
---|---|---|
committer | George Karpenkov <ekarpenkov@apple.com> | 2019-01-29 19:29:33 +0000 |
commit | 2e466678536fc5df97e998e4f1acf90141fbc3d0 (patch) | |
tree | cad54d0f09f32fcc5b2ceb11f327af210a93ade6 /clang/lib/Analysis/RetainSummaryManager.cpp | |
parent | 38bc347ff50b80558a8c1e7e2156057c0033cf7f (diff) | |
download | bcm5719-llvm-2e466678536fc5df97e998e4f1acf90141fbc3d0.tar.gz bcm5719-llvm-2e466678536fc5df97e998e4f1acf90141fbc3d0.zip |
[analyzer] [ARCMT] [NFC] Unify entry point into RetainSummaryManager
Just use one single entry point, since we have AnyCall utility now.
Differential Revision: https://reviews.llvm.org/D57346
llvm-svn: 352532
Diffstat (limited to 'clang/lib/Analysis/RetainSummaryManager.cpp')
-rw-r--r-- | clang/lib/Analysis/RetainSummaryManager.cpp | 37 |
1 files changed, 6 insertions, 31 deletions
diff --git a/clang/lib/Analysis/RetainSummaryManager.cpp b/clang/lib/Analysis/RetainSummaryManager.cpp index d8b3f818c24..96b5c9eea86 100644 --- a/clang/lib/Analysis/RetainSummaryManager.cpp +++ b/clang/lib/Analysis/RetainSummaryManager.cpp @@ -635,11 +635,14 @@ RetainSummaryManager::getSummary(AnyCall C, // FIXME: These calls are currently unsupported. return getPersistentStopSummary(); case AnyCall::ObjCMethod: { - const auto *ME = cast<ObjCMessageExpr>(C.getExpr()); - if (ME->isInstanceMessage()) + const auto *ME = cast_or_null<ObjCMessageExpr>(C.getExpr()); + if (!ME) { + return getMethodSummary(cast<ObjCMethodDecl>(C.getDecl())); + } else if (ME->isInstanceMessage()) { Summ = getInstanceMethodSummary(ME, ReceiverType); - else + } else { Summ = getClassMethodSummary(ME); + } break; } } @@ -1238,31 +1241,3 @@ RetainSummaryManager::getMethodSummary(const ObjCMethodDecl *MD) { return getMethodSummary(S, ID, MD, ResultTy, *CachedSummaries); } - -CallEffects CallEffects::getEffect(const ObjCMethodDecl *MD) { - ASTContext &Ctx = MD->getASTContext(); - RetainSummaryManager M(Ctx, - /*TrackNSAndCFObjects=*/true, - /*TrackOSObjects=*/false); - const RetainSummary *S = M.getMethodSummary(MD); - CallEffects CE(S->getRetEffect(), S->getReceiverEffect()); - unsigned N = MD->param_size(); - for (unsigned i = 0; i < N; ++i) { - CE.Args.push_back(S->getArg(i)); - } - return CE; -} - -CallEffects CallEffects::getEffect(const FunctionDecl *FD) { - ASTContext &Ctx = FD->getASTContext(); - RetainSummaryManager M(Ctx, - /*TrackNSAndCFObjects=*/true, - /*TrackOSObjects=*/false); - const RetainSummary *S = M.getFunctionSummary(FD); - CallEffects CE(S->getRetEffect()); - unsigned N = FD->param_size(); - for (unsigned i = 0; i < N; ++i) { - CE.Args.push_back(S->getArg(i)); - } - return CE; -} |