[cfe-commits] r126725 - in /cfe/trunk: include/clang/StaticAnalyzer/Core/PathSensitive/Checker.h include/clang/StaticAnalyzer/Core/PathSensitive/CheckerVisitor.def include/clang/StaticAnalyzer/Core/PathSensitive/CheckerVisitor.h lib/StaticAnalyzer/Checkers/ExprEngine.cpp lib/StaticAnalyzer/Core/CMakeLists.txt lib/StaticAnalyzer/Core/Checker.cpp lib/StaticAnalyzer/Core/CheckerContext.cpp lib/StaticAnalyzer/Core/SimpleConstraintManager.cpp

Argyrios Kyrtzidis akyrtzi at gmail.com
Mon Feb 28 17:16:09 PST 2011


Author: akirtzidis
Date: Mon Feb 28 19:16:08 2011
New Revision: 126725

URL: http://llvm.org/viewvc/llvm-project?rev=126725&view=rev
Log:
[analyzer] Remove Checker V1.

Added:
    cfe/trunk/lib/StaticAnalyzer/Core/CheckerContext.cpp
      - copied, changed from r126724, cfe/trunk/lib/StaticAnalyzer/Core/Checker.cpp
Removed:
    cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/Checker.h
    cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerVisitor.def
    cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerVisitor.h
    cfe/trunk/lib/StaticAnalyzer/Core/Checker.cpp
Modified:
    cfe/trunk/lib/StaticAnalyzer/Checkers/ExprEngine.cpp
    cfe/trunk/lib/StaticAnalyzer/Core/CMakeLists.txt
    cfe/trunk/lib/StaticAnalyzer/Core/SimpleConstraintManager.cpp

Removed: cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/Checker.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/Checker.h?rev=126724&view=auto
==============================================================================
--- cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/Checker.h (original)
+++ cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/Checker.h (removed)
@@ -1,166 +0,0 @@
-//== Checker.h - Abstract interface for checkers -----------------*- C++ -*--=//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-//  This file defines Checker and CheckerVisitor, classes used for creating
-//  domain-specific checks.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_CLANG_GR_CHECKER
-#define LLVM_CLANG_GR_CHECKER
-
-#include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h"
-
-//===----------------------------------------------------------------------===//
-// Checker interface.
-//===----------------------------------------------------------------------===//
-
-namespace clang {
-
-namespace ento {
-
-class Checker {
-private:
-  friend class ExprEngine;
-
-  // FIXME: Remove the 'tag' option.
-  void GR_Visit(ExplodedNodeSet &Dst,
-                StmtNodeBuilder &Builder,
-                ExprEngine &Eng,
-                const Stmt *S,
-                ExplodedNode *Pred, void *tag, bool isPrevisit,
-                bool& respondsToCallback) {
-    CheckerContext C(Dst, Builder, Eng, Pred, tag,
-                     isPrevisit ? ProgramPoint::PreStmtKind :
-                     ProgramPoint::PostStmtKind, &respondsToCallback, S);
-    if (isPrevisit)
-      _PreVisit(C, S);
-    else
-      _PostVisit(C, S);
-  }
-
-  void GR_visitObjCMessage(ExplodedNodeSet &Dst,
-                           StmtNodeBuilder &Builder,
-                           ExprEngine &Eng,
-                           const ObjCMessage &msg,
-                           ExplodedNode *Pred, void *tag, bool isPrevisit) {
-    CheckerContext C(Dst, Builder, Eng, Pred, tag,
-                     isPrevisit ? ProgramPoint::PreStmtKind :
-                     ProgramPoint::PostStmtKind, 0, msg.getOriginExpr());
-    if (isPrevisit)
-      preVisitObjCMessage(C, msg);
-    else
-      postVisitObjCMessage(C, msg);
-  }
-
-  bool GR_evalNilReceiver(ExplodedNodeSet &Dst, StmtNodeBuilder &Builder,
-                          ExprEngine &Eng, const ObjCMessage &msg,
-                          ExplodedNode *Pred, const GRState *state, void *tag) {
-    CheckerContext C(Dst, Builder, Eng, Pred, tag, ProgramPoint::PostStmtKind,
-                     0, msg.getOriginExpr(), state);
-    return evalNilReceiver(C, msg);
-  }
-
-  bool GR_evalCallExpr(ExplodedNodeSet &Dst, StmtNodeBuilder &Builder,
-                       ExprEngine &Eng, const CallExpr *CE,
-                       ExplodedNode *Pred, void *tag) {
-    CheckerContext C(Dst, Builder, Eng, Pred, tag, ProgramPoint::PostStmtKind,
-                     0, CE);
-    return evalCallExpr(C, CE);
-  }
-
-  // FIXME: Remove the 'tag' option.
-  void GR_VisitBind(ExplodedNodeSet &Dst,
-                    StmtNodeBuilder &Builder, ExprEngine &Eng,
-                    const Stmt *StoreE, ExplodedNode *Pred, void *tag, 
-                    SVal location, SVal val,
-                    bool isPrevisit) {
-    CheckerContext C(Dst, Builder, Eng, Pred, tag,
-                     isPrevisit ? ProgramPoint::PreStmtKind :
-                     ProgramPoint::PostStmtKind, 0, StoreE);
-    assert(isPrevisit && "Only previsit supported for now.");
-    PreVisitBind(C, StoreE, location, val);
-  }
-  
-  // FIXME: Remove the 'tag' option.
-  void GR_visitLocation(ExplodedNodeSet &Dst,
-                        StmtNodeBuilder &Builder,
-                        ExprEngine &Eng,
-                        const Stmt *S,
-                        ExplodedNode *Pred, const GRState *state,
-                        SVal location,
-                        void *tag, bool isLoad) {
-    CheckerContext C(Dst, Builder, Eng, Pred, tag,
-                     isLoad ? ProgramPoint::PreLoadKind :
-                     ProgramPoint::PreStoreKind, 0, S, state);
-    visitLocation(C, S, location, isLoad);
-  }
-
-  void GR_evalDeadSymbols(ExplodedNodeSet &Dst, StmtNodeBuilder &Builder,
-                          ExprEngine &Eng, const Stmt *S, ExplodedNode *Pred,
-                          SymbolReaper &SymReaper, void *tag) {
-    CheckerContext C(Dst, Builder, Eng, Pred, tag, 
-                     ProgramPoint::PostPurgeDeadSymbolsKind, 0, S);
-    evalDeadSymbols(C, SymReaper);
-  }
-
-public:
-  virtual ~Checker();
-  virtual void _PreVisit(CheckerContext &C, const Stmt *S) {}
-  virtual void _PostVisit(CheckerContext &C, const Stmt *S) {}
-  virtual void preVisitObjCMessage(CheckerContext &C, ObjCMessage msg) {}
-  virtual void postVisitObjCMessage(CheckerContext &C, ObjCMessage msg) {}
-  virtual void visitLocation(CheckerContext &C, const Stmt *S, SVal location,
-                             bool isLoad) {}
-  virtual void PreVisitBind(CheckerContext &C, const Stmt *StoreE,
-                            SVal location, SVal val) {}
-  virtual void evalDeadSymbols(CheckerContext &C, SymbolReaper &SymReaper) {}
-  virtual void evalEndPath(EndOfFunctionNodeBuilder &B, void *tag,
-                           ExprEngine &Eng) {}
-
-  virtual void MarkLiveSymbols(const GRState *state, SymbolReaper &SymReaper) {}
-
-  virtual void VisitBranchCondition(BranchNodeBuilder &Builder,
-                                    ExprEngine &Eng,
-                                    const Stmt *Condition, void *tag) {}
-
-  virtual bool evalNilReceiver(CheckerContext &C, ObjCMessage msg) {
-    return false;
-  }
-
-  virtual bool evalCallExpr(CheckerContext &C, const CallExpr *CE) {
-    return false;
-  }
-
-  virtual const GRState *evalAssume(const GRState *state, SVal Cond, 
-                                    bool Assumption, bool *respondsToCallback) {
-    *respondsToCallback = false;
-    return state;
-  }
-
-  virtual bool wantsRegionChangeUpdate(const GRState *state) { return false; }
-
-  virtual const GRState *EvalRegionChanges(const GRState *state,
-                                           const MemRegion * const *Begin,
-                                           const MemRegion * const *End,
-                                           bool *respondsToCallback) {
-    *respondsToCallback = false;
-    return state;
-  }
-
-  virtual void VisitEndAnalysis(ExplodedGraph &G, BugReporter &B,
-                                ExprEngine &Eng) {}
-};
-
-} // end GR namespace
-
-} // end clang namespace
-
-#endif
-

Removed: cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerVisitor.def
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerVisitor.def?rev=126724&view=auto
==============================================================================
--- cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerVisitor.def (original)
+++ cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerVisitor.def (removed)
@@ -1,48 +0,0 @@
-//===-- CheckerVisitor.def - Metadata for CheckerVisitor ----------------*-===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-//  This file defines the AST nodes accepted by the CheckerVisitor class.
-//
-//===---------------------------------------------------------------------===//
-
-#ifndef PREVISIT
-#define PREVISIT(NODE, FALLBACK)
-#endif
-
-#ifndef POSTVISIT
-#define POSTVISIT(NODE, FALLBACK)
-#endif
-
-PREVISIT(ArraySubscriptExpr, Stmt)
-PREVISIT(BinaryOperator, Stmt)
-PREVISIT(CallExpr, GenericCall)
-PREVISIT(CompoundAssignOperator, BinaryOperator)
-PREVISIT(CStyleCastExpr, CastExpr)
-PREVISIT(CXXConstCastExpr, CastExpr)
-PREVISIT(CXXDynamicCastExpr, CastExpr)
-PREVISIT(CXXFunctionalCastExpr, CastExpr)
-PREVISIT(CXXOperatorCallExpr, GenericCall)
-PREVISIT(CXXMemberCallExpr, GenericCall)
-PREVISIT(CXXReinterpretCastExpr, CastExpr)
-PREVISIT(CXXStaticCastExpr, CastExpr)
-PREVISIT(DeclStmt, Stmt)
-PREVISIT(ImplicitCastExpr, CastExpr)
-PREVISIT(ObjCAtSynchronizedStmt, Stmt)
-PREVISIT(ReturnStmt, Stmt)
-
-POSTVISIT(BlockExpr, Stmt)
-POSTVISIT(BinaryOperator, Stmt)
-POSTVISIT(CallExpr, GenericCall)
-POSTVISIT(CompoundAssignOperator, BinaryOperator)
-POSTVISIT(CXXOperatorCallExpr, GenericCall)
-POSTVISIT(CXXMemberCallExpr, GenericCall)
-POSTVISIT(ObjCIvarRefExpr, Stmt)
-
-#undef PREVISIT
-#undef POSTVISIT

Removed: cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerVisitor.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerVisitor.h?rev=126724&view=auto
==============================================================================
--- cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerVisitor.h (original)
+++ cfe/trunk/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerVisitor.h (removed)
@@ -1,103 +0,0 @@
-//== CheckerVisitor.h - Abstract visitor for checkers ------------*- C++ -*--=//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-//  This file defines CheckerVisitor.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef LLVM_CLANG_GR_CHECKERVISITOR
-#define LLVM_CLANG_GR_CHECKERVISITOR
-#include "clang/StaticAnalyzer/Core/PathSensitive/Checker.h"
-
-namespace clang {
-
-namespace ento {
-
-//===----------------------------------------------------------------------===//
-// Checker visitor interface.  Used by subclasses of Checker to specify their
-// own checker visitor logic.
-//===----------------------------------------------------------------------===//
-
-/// CheckerVisitor - This class implements a simple visitor for Stmt subclasses.
-/// Since Expr derives from Stmt, this also includes support for visiting Exprs.
-template<typename ImplClass>
-class CheckerVisitor : public Checker {
-public:
-  virtual void _PreVisit(CheckerContext &C, const Stmt *S) {
-    PreVisit(C, S);
-  }
-  
-  virtual void _PostVisit(CheckerContext &C, const Stmt *S) {
-    PostVisit(C, S);
-  }
-
-  void PreVisit(CheckerContext &C, const Stmt *S) {
-    switch (S->getStmtClass()) {
-      default:
-        assert(false && "Unsupport statement.");
-        return;
-
-#define PREVISIT(NAME, FALLBACK) \
-case Stmt::NAME ## Class:\
-static_cast<ImplClass*>(this)->PreVisit ## NAME(C,static_cast<const NAME*>(S));\
-break;
-#include "clang/StaticAnalyzer/Core/PathSensitive/CheckerVisitor.def"
-    }
-  }
-  
-  void PostVisit(CheckerContext &C, const Stmt *S) {
-    switch (S->getStmtClass()) {
-      default:
-        assert(false && "Unsupport statement.");
-        return;
-
-#define POSTVISIT(NAME, FALLBACK) \
-case Stmt::NAME ## Class:\
-static_cast<ImplClass*>(this)->\
-PostVisit ## NAME(C,static_cast<const NAME*>(S));\
-break;
-#include "clang/StaticAnalyzer/Core/PathSensitive/CheckerVisitor.def"
-    }
-  }
-
-  void PreVisitGenericCall(CheckerContext &C, const CallExpr *CE) {
-    static_cast<ImplClass*>(this)->PreVisitStmt(C, CE);
-  }
-  void PostVisitGenericCall(CheckerContext &C, const CallExpr *CE) {
-    static_cast<ImplClass*>(this)->PostVisitStmt(C, CE);
-  }
-
-  void PreVisitStmt(CheckerContext &C, const Stmt *S) {
-    *C.respondsToCallback = false;
-  }
-
-  void PostVisitStmt(CheckerContext &C, const Stmt *S) {
-    *C.respondsToCallback = false;
-  }
-
-  void PreVisitCastExpr(CheckerContext &C, const CastExpr *E) {
-    static_cast<ImplClass*>(this)->PreVisitStmt(C, E);
-  }
-  
-#define PREVISIT(NAME, FALLBACK) \
-void PreVisit ## NAME(CheckerContext &C, const NAME* S) {\
-  static_cast<ImplClass*>(this)->PreVisit ## FALLBACK(C, S);\
-}
-#define POSTVISIT(NAME, FALLBACK) \
-void PostVisit ## NAME(CheckerContext &C, const NAME* S) {\
-  static_cast<ImplClass*>(this)->PostVisit ## FALLBACK(C, S);\
-}
-#include "clang/StaticAnalyzer/Core/PathSensitive/CheckerVisitor.def"
-};
-
-} // end GR namespace
-
-} // end clang namespace
-
-#endif

Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/ExprEngine.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/ExprEngine.cpp?rev=126725&r1=126724&r2=126725&view=diff
==============================================================================
--- cfe/trunk/lib/StaticAnalyzer/Checkers/ExprEngine.cpp (original)
+++ cfe/trunk/lib/StaticAnalyzer/Checkers/ExprEngine.cpp Mon Feb 28 19:16:08 2011
@@ -18,7 +18,6 @@
 #include "clang/StaticAnalyzer/Core/PathSensitive/AnalysisManager.h"
 #include "clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h"
 #include "clang/StaticAnalyzer/Core/PathSensitive/ExprEngineBuilders.h"
-#include "clang/StaticAnalyzer/Core/PathSensitive/Checker.h"
 #include "clang/AST/CharUnits.h"
 #include "clang/AST/ParentMap.h"
 #include "clang/AST/StmtObjC.h"

Modified: cfe/trunk/lib/StaticAnalyzer/Core/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Core/CMakeLists.txt?rev=126725&r1=126724&r2=126725&view=diff
==============================================================================
--- cfe/trunk/lib/StaticAnalyzer/Core/CMakeLists.txt (original)
+++ cfe/trunk/lib/StaticAnalyzer/Core/CMakeLists.txt Mon Feb 28 19:16:08 2011
@@ -11,7 +11,7 @@
   BugReporter.cpp
   BugReporterVisitors.cpp
   CFRefCount.cpp
-  Checker.cpp
+  CheckerContext.cpp
   CheckerHelpers.cpp
   CheckerManager.cpp
   Environment.cpp

Removed: cfe/trunk/lib/StaticAnalyzer/Core/Checker.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Core/Checker.cpp?rev=126724&view=auto
==============================================================================
--- cfe/trunk/lib/StaticAnalyzer/Core/Checker.cpp (original)
+++ cfe/trunk/lib/StaticAnalyzer/Core/Checker.cpp (removed)
@@ -1,35 +0,0 @@
-//== Checker.h - Abstract interface for checkers -----------------*- C++ -*--=//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-//  This file defines Checker and CheckerVisitor, classes used for creating
-//  domain-specific checks.
-//
-//===----------------------------------------------------------------------===//
-
-#include "clang/StaticAnalyzer/Core/PathSensitive/Checker.h"
-using namespace clang;
-using namespace ento;
-
-Checker::~Checker() {}
-
-CheckerContext::~CheckerContext() {
-  // Do we need to autotransition?  'Dst' can get populated in a variety of
-  // ways, including 'addTransition()' adding the predecessor node to Dst
-  // without actually generated a new node.  We also shouldn't autotransition
-  // if we are building sinks or we generated a node and decided to not
-  // add it as a transition.
-  if (Dst.size() == size && !B.BuildSinks && !B.hasGeneratedNode) {
-    if (ST && ST != B.GetState(Pred)) {
-      static int autoTransitionTag = 0;
-      addTransition(ST, &autoTransitionTag);
-    }
-    else
-      Dst.Add(Pred);
-  }
-}

Copied: cfe/trunk/lib/StaticAnalyzer/Core/CheckerContext.cpp (from r126724, cfe/trunk/lib/StaticAnalyzer/Core/Checker.cpp)
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Core/CheckerContext.cpp?p2=cfe/trunk/lib/StaticAnalyzer/Core/CheckerContext.cpp&p1=cfe/trunk/lib/StaticAnalyzer/Core/Checker.cpp&r1=126724&r2=126725&rev=126725&view=diff
==============================================================================
--- cfe/trunk/lib/StaticAnalyzer/Core/Checker.cpp (original)
+++ cfe/trunk/lib/StaticAnalyzer/Core/CheckerContext.cpp Mon Feb 28 19:16:08 2011
@@ -1,4 +1,4 @@
-//== Checker.h - Abstract interface for checkers -----------------*- C++ -*--=//
+//== CheckerContext.cpp - Context info for path-sensitive checkers-----------=//
 //
 //                     The LLVM Compiler Infrastructure
 //
@@ -7,17 +7,15 @@
 //
 //===----------------------------------------------------------------------===//
 //
-//  This file defines Checker and CheckerVisitor, classes used for creating
-//  domain-specific checks.
+//  This file defines CheckerContext that provides contextual info for
+//  path-sensitive checkers.
 //
 //===----------------------------------------------------------------------===//
 
-#include "clang/StaticAnalyzer/Core/PathSensitive/Checker.h"
+#include "clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h"
 using namespace clang;
 using namespace ento;
 
-Checker::~Checker() {}
-
 CheckerContext::~CheckerContext() {
   // Do we need to autotransition?  'Dst' can get populated in a variety of
   // ways, including 'addTransition()' adding the predecessor node to Dst

Modified: cfe/trunk/lib/StaticAnalyzer/Core/SimpleConstraintManager.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Core/SimpleConstraintManager.cpp?rev=126725&r1=126724&r2=126725&view=diff
==============================================================================
--- cfe/trunk/lib/StaticAnalyzer/Core/SimpleConstraintManager.cpp (original)
+++ cfe/trunk/lib/StaticAnalyzer/Core/SimpleConstraintManager.cpp Mon Feb 28 19:16:08 2011
@@ -15,7 +15,6 @@
 #include "SimpleConstraintManager.h"
 #include "clang/StaticAnalyzer/Core/PathSensitive/ExprEngine.h"
 #include "clang/StaticAnalyzer/Core/PathSensitive/GRState.h"
-#include "clang/StaticAnalyzer/Core/PathSensitive/Checker.h"
 
 namespace clang {
 





More information about the cfe-commits mailing list