diff options
author | Ted Kremenek <kremenek@apple.com> | 2009-11-06 20:47:51 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2009-11-06 20:47:51 +0000 |
commit | 53a70c055db21ad2dcbe3f84d51ee16cb30a77bb (patch) | |
tree | 2a3acf5e1642e3067b4579f57acc8c2820c6f064 | |
parent | e8e631c912092b2192a19206f6db51e09e1e5552 (diff) | |
download | bcm5719-llvm-53a70c055db21ad2dcbe3f84d51ee16cb30a77bb.tar.gz bcm5719-llvm-53a70c055db21ad2dcbe3f84d51ee16cb30a77bb.zip |
Make the implementation of DivZeroChecker private.
llvm-svn: 86288
4 files changed, 27 insertions, 37 deletions
diff --git a/clang/include/clang/Analysis/PathSensitive/Checkers/DivZeroChecker.h b/clang/include/clang/Analysis/PathSensitive/Checkers/DivZeroChecker.h deleted file mode 100644 index 317e43a0e62..00000000000 --- a/clang/include/clang/Analysis/PathSensitive/Checkers/DivZeroChecker.h +++ /dev/null @@ -1,28 +0,0 @@ -//== DivZeroChecker.h - Division by zero checker ----------------*- C++ -*--==// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -// -// This defines DivZeroChecker, a builtin check in GRExprEngine that performs -// checks for division by zeros. -// -//===----------------------------------------------------------------------===// - -#include "clang/Analysis/PathSensitive/CheckerVisitor.h" - -namespace clang { - -class DivZeroChecker : public CheckerVisitor<DivZeroChecker> { - BuiltinBug *BT; -public: - DivZeroChecker() : BT(0) {} - - static void *getTag(); - void PreVisitBinaryOperator(CheckerContext &C, const BinaryOperator *B); -}; - -} diff --git a/clang/lib/Analysis/DivZeroChecker.cpp b/clang/lib/Analysis/DivZeroChecker.cpp index c90c0ab4931..5f949fdc392 100644 --- a/clang/lib/Analysis/DivZeroChecker.cpp +++ b/clang/lib/Analysis/DivZeroChecker.cpp @@ -12,10 +12,25 @@ // //===----------------------------------------------------------------------===// -#include "clang/Analysis/PathSensitive/Checkers/DivZeroChecker.h" +#include "clang/Analysis/PathSensitive/CheckerVisitor.h" +#include "GRExprEngineInternalChecks.h" using namespace clang; +namespace { +class VISIBILITY_HIDDEN DivZeroChecker : public CheckerVisitor<DivZeroChecker> { + BuiltinBug *BT; +public: + DivZeroChecker() : BT(0) {} + static void *getTag(); + void PreVisitBinaryOperator(CheckerContext &C, const BinaryOperator *B); +}; +} // end anonymous namespace + +void clang::RegisterDivZeroChecker(GRExprEngine &Eng) { + Eng.registerCheck(new DivZeroChecker()); +} + void *DivZeroChecker::getTag() { static int x; return &x; diff --git a/clang/lib/Analysis/GRExprEngineInternalChecks.cpp b/clang/lib/Analysis/GRExprEngineInternalChecks.cpp index b18e58dea2e..3daf3c8ef59 100644 --- a/clang/lib/Analysis/GRExprEngineInternalChecks.cpp +++ b/clang/lib/Analysis/GRExprEngineInternalChecks.cpp @@ -17,7 +17,6 @@ #include "clang/Analysis/PathSensitive/GRExprEngine.h" #include "clang/Analysis/PathSensitive/CheckerVisitor.h" #include "clang/Analysis/PathSensitive/Checkers/DereferenceChecker.h" -#include "clang/Analysis/PathSensitive/Checkers/DivZeroChecker.h" #include "clang/Analysis/PathSensitive/Checkers/BadCallChecker.h" #include "clang/Analysis/PathSensitive/Checkers/UndefinedArgChecker.h" #include "clang/Analysis/PathSensitive/Checkers/UndefinedAssignmentChecker.h" @@ -398,19 +397,22 @@ void GRExprEngine::RegisterInternalChecks() { BR.Register(new NilReceiverStructRet(this)); BR.Register(new NilReceiverLargerThanVoidPtrRet(this)); + RegisterDivZeroChecker(*this); + RegisterReturnStackAddressChecker(*this); + RegisterReturnUndefChecker(*this); + + // Note that this must be registered after ReturnStackAddressChecker. + RegisterReturnPointerRangeChecker(*this); + // The following checks do not need to have their associated BugTypes // explicitly registered with the BugReporter. If they issue any BugReports, // their associated BugType will get registered with the BugReporter // automatically. Note that the check itself is owned by the GRExprEngine - // object. - RegisterReturnStackAddressChecker(*this); - RegisterReturnUndefChecker(*this); - RegisterReturnPointerRangeChecker(*this); + // object. registerCheck(new AttrNonNullChecker()); registerCheck(new UndefinedArgChecker()); registerCheck(new UndefinedAssignmentChecker()); registerCheck(new BadCallChecker()); - registerCheck(new DivZeroChecker()); registerCheck(new UndefDerefChecker()); registerCheck(new NullDerefChecker()); registerCheck(new UndefSizedVLAChecker()); diff --git a/clang/lib/Analysis/GRExprEngineInternalChecks.h b/clang/lib/Analysis/GRExprEngineInternalChecks.h index b4a00d2e131..ae239ca23c9 100644 --- a/clang/lib/Analysis/GRExprEngineInternalChecks.h +++ b/clang/lib/Analysis/GRExprEngineInternalChecks.h @@ -19,9 +19,10 @@ namespace clang { class GRExprEngine; -void RegisterReturnStackAddressChecker(GRExprEngine &Eng); -void RegisterReturnUndefChecker(GRExprEngine &Eng); +void RegisterDivZeroChecker(GRExprEngine &Eng); void RegisterReturnPointerRangeChecker(GRExprEngine &Eng); +void RegisterReturnStackAddressChecker(GRExprEngine &Eng); +void RegisterReturnUndefChecker(GRExprEngine &Eng); } // end clang namespace #endif |