diff options
| author | Anna Zaks <ganna@apple.com> | 2011-12-01 05:57:37 +0000 |
|---|---|---|
| committer | Anna Zaks <ganna@apple.com> | 2011-12-01 05:57:37 +0000 |
| commit | c6aa531a8f89d5b671aea57576f40b205784b530 (patch) | |
| tree | 54dc487bfe8c2bc259c7bcfe5f4283c7cb2d12a2 /clang/lib/StaticAnalyzer/Checkers/OSAtomicChecker.cpp | |
| parent | 24fc93a9400253253587dda239a287197ee47365 (diff) | |
| download | bcm5719-llvm-c6aa531a8f89d5b671aea57576f40b205784b530.tar.gz bcm5719-llvm-c6aa531a8f89d5b671aea57576f40b205784b530.zip | |
[analyzer] Refactor checkers to use helper function for getting callee Decl and name.
We are getting name of the called function or it's declaration in a few checkers. Refactor them to use the helper function in the CheckerContext.
llvm-svn: 145576
Diffstat (limited to 'clang/lib/StaticAnalyzer/Checkers/OSAtomicChecker.cpp')
| -rw-r--r-- | clang/lib/StaticAnalyzer/Checkers/OSAtomicChecker.cpp | 27 |
1 files changed, 15 insertions, 12 deletions
diff --git a/clang/lib/StaticAnalyzer/Checkers/OSAtomicChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/OSAtomicChecker.cpp index 7bdb871db92..27d8fb5abbd 100644 --- a/clang/lib/StaticAnalyzer/Checkers/OSAtomicChecker.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/OSAtomicChecker.cpp @@ -35,23 +35,26 @@ private: }; } +static StringRef getCalleeName(const ProgramState *State, + const CallExpr *CE) { + const Expr *Callee = CE->getCallee(); + SVal L = State->getSVal(Callee); + const FunctionDecl *funDecl = L.getAsFunctionDecl(); + if (!funDecl) + return StringRef(); + IdentifierInfo *funI = funDecl->getIdentifier(); + if (!funI) + return StringRef(); + return funI->getName(); +} + bool OSAtomicChecker::inlineCall(const CallExpr *CE, ExprEngine &Eng, ExplodedNode *Pred, ExplodedNodeSet &Dst) const { - const ProgramState *state = Pred->getState(); - const Expr *Callee = CE->getCallee(); - SVal L = state->getSVal(Callee); - - const FunctionDecl *FD = L.getAsFunctionDecl(); - if (!FD) - return false; - - const IdentifierInfo *II = FD->getIdentifier(); - if (!II) + StringRef FName = getCalleeName(Pred->getState(), CE); + if (FName.empty()) return false; - - StringRef FName(II->getName()); // Check for compare and swap. if (FName.startswith("OSAtomicCompareAndSwap") || |

