diff options
author | Jordy Rose <jediknil@belkadan.com> | 2011-07-19 20:31:42 +0000 |
---|---|---|
committer | Jordy Rose <jediknil@belkadan.com> | 2011-07-19 20:31:42 +0000 |
commit | a39e10fd7c71657abec87ffc6eeab40d12b8ffc9 (patch) | |
tree | b08811c8cfeb0b062f4a06f4dcaac49d8bdee4e9 /clang/lib/StaticAnalyzer/Checkers/PthreadLockChecker.cpp | |
parent | b17d9b12a6047591099d92aa73a890feaf8b3774 (diff) | |
download | llvm-a39e10fd7c71657abec87ffc6eeab40d12b8ffc9.zip llvm-a39e10fd7c71657abec87ffc6eeab40d12b8ffc9.tar.gz llvm-a39e10fd7c71657abec87ffc6eeab40d12b8ffc9.tar.bz2 |
[analyzer] Very minor cleanup in PthreadLockChecker. No functionality change.
llvm-svn: 135518
Diffstat (limited to 'clang/lib/StaticAnalyzer/Checkers/PthreadLockChecker.cpp')
-rw-r--r-- | clang/lib/StaticAnalyzer/Checkers/PthreadLockChecker.cpp | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/clang/lib/StaticAnalyzer/Checkers/PthreadLockChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/PthreadLockChecker.cpp index df54d49..a722c49 100644 --- a/clang/lib/StaticAnalyzer/Checkers/PthreadLockChecker.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/PthreadLockChecker.cpp @@ -7,8 +7,8 @@ // //===----------------------------------------------------------------------===// // -// This defines PthreadLockChecker, a simple lock -> unlock checker. Eventually -// this shouldn't be registered with ExprEngineInternalChecks. +// This defines PthreadLockChecker, a simple lock -> unlock checker. +// Also handles XNU locks, which behave similarly enough to share code. // //===----------------------------------------------------------------------===// @@ -16,7 +16,6 @@ #include "clang/StaticAnalyzer/Core/Checker.h" #include "clang/StaticAnalyzer/Core/CheckerManager.h" #include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h" -#include "clang/StaticAnalyzer/Core/BugReporter/BugReporter.h" #include "clang/StaticAnalyzer/Core/BugReporter/BugType.h" #include "clang/StaticAnalyzer/Core/PathSensitive/GRStateTrait.h" #include "llvm/ADT/ImmutableList.h" @@ -59,19 +58,20 @@ void PthreadLockChecker::checkPostStmt(const CallExpr *CE, CheckerContext &C) const { const GRState *state = C.getState(); const Expr *Callee = CE->getCallee(); - const FunctionTextRegion *R = - dyn_cast_or_null<FunctionTextRegion>(state->getSVal(Callee).getAsRegion()); - - if (!R) + const FunctionDecl *FD = state->getSVal(Callee).getAsFunctionDecl(); + + if (!FD) return; - - IdentifierInfo *II = R->getDecl()->getIdentifier(); + + // Get the name of the callee. + IdentifierInfo *II = FD->getIdentifier(); if (!II) // if no identifier, not a simple C function return; llvm::StringRef FName = II->getName(); if (CE->getNumArgs() != 1) return; + if (FName == "pthread_mutex_lock" || FName == "pthread_rwlock_rdlock" || FName == "pthread_rwlock_wrlock") |