[cfe-commits] r86959 - /cfe/trunk/lib/Analysis/PthreadLockChecker.cpp

Ted Kremenek kremenek at apple.com
Wed Nov 11 22:26:58 PST 2009


Author: kremenek
Date: Thu Nov 12 00:26:58 2009
New Revision: 86959

URL: http://llvm.org/viewvc/llvm-project?rev=86959&view=rev
Log:
PthreadLockChecker doesn't need PreVisitCallExpr() yet.  All the current logic should be done in PostVisitCallExpr()

Modified:
    cfe/trunk/lib/Analysis/PthreadLockChecker.cpp

Modified: cfe/trunk/lib/Analysis/PthreadLockChecker.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Analysis/PthreadLockChecker.cpp?rev=86959&r1=86958&r2=86959&view=diff

==============================================================================
--- cfe/trunk/lib/Analysis/PthreadLockChecker.cpp (original)
+++ cfe/trunk/lib/Analysis/PthreadLockChecker.cpp Thu Nov 12 00:26:58 2009
@@ -30,7 +30,6 @@
     static int x = 0;
     return &x;
   }
-  void PreVisitCallExpr(CheckerContext &C, const CallExpr *CE);
   void PostVisitCallExpr(CheckerContext &C, const CallExpr *CE);
     
   void AcquireLock(CheckerContext &C, const CallExpr *CE,
@@ -55,8 +54,9 @@
   Eng.registerCheck(new PthreadLockChecker());
 }
 
-void PthreadLockChecker::PreVisitCallExpr(CheckerContext &C,
-                                          const CallExpr *CE) {
+
+void PthreadLockChecker::PostVisitCallExpr(CheckerContext &C,
+                                           const CallExpr *CE) {
   const GRState *state = C.getState();
   const Expr *Callee = CE->getCallee();
   const CodeTextRegion *R =
@@ -66,7 +66,7 @@
     return;
   
   llvm::StringRef FName = R->getDecl()->getName();
-
+  
   if (FName == "pthread_mutex_lock") {
     if (CE->getNumArgs() != 1)
       return;
@@ -76,22 +76,8 @@
     if (CE->getNumArgs() != 1)
       return;
     AcquireLock(C, CE, state->getSVal(CE->getArg(0)), true);
-  }
-}
-
-void PthreadLockChecker::PostVisitCallExpr(CheckerContext &C,
-                                           const CallExpr *CE) {
-  const GRState *state = C.getState();
-  const Expr *Callee = CE->getCallee();
-  const CodeTextRegion *R =
-    dyn_cast_or_null<CodeTextRegion>(state->getSVal(Callee).getAsRegion());
-  
-  if (!R)
-    return;
-  
-  llvm::StringRef FName = R->getDecl()->getName();
-  
-  if (FName == "pthread_mutex_unlock") {
+  }  
+  else if (FName == "pthread_mutex_unlock") {
     if (CE->getNumArgs() != 1)
       return;
     ReleaseLock(C, CE, state->getSVal(CE->getArg(0)));





More information about the cfe-commits mailing list