Browse Source

[analyzer] Remove Checker V1.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@126725 91177308-0d34-0410-b5e6-96231b3b80d8
Argyrios Kyrtzidis 14 years ago
parent
commit
d26a475068

+ 0 - 166
include/clang/StaticAnalyzer/Core/PathSensitive/Checker.h

@@ -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
-

+ 0 - 48
include/clang/StaticAnalyzer/Core/PathSensitive/CheckerVisitor.def

@@ -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

+ 0 - 103
include/clang/StaticAnalyzer/Core/PathSensitive/CheckerVisitor.h

@@ -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

+ 0 - 1
lib/StaticAnalyzer/Checkers/ExprEngine.cpp

@@ -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"

+ 1 - 1
lib/StaticAnalyzer/Core/CMakeLists.txt

@@ -11,7 +11,7 @@ add_clang_library(clangStaticAnalyzerCore
   BugReporter.cpp
   BugReporterVisitors.cpp
   CFRefCount.cpp
-  Checker.cpp
+  CheckerContext.cpp
   CheckerHelpers.cpp
   CheckerManager.cpp
   Environment.cpp

+ 4 - 6
lib/StaticAnalyzer/Core/Checker.cpp → lib/StaticAnalyzer/Core/CheckerContext.cpp

@@ -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

+ 0 - 1
lib/StaticAnalyzer/Core/SimpleConstraintManager.cpp

@@ -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 {