summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2009-11-06 20:47:51 +0000
committerTed Kremenek <kremenek@apple.com>2009-11-06 20:47:51 +0000
commit53a70c055db21ad2dcbe3f84d51ee16cb30a77bb (patch)
tree2a3acf5e1642e3067b4579f57acc8c2820c6f064
parente8e631c912092b2192a19206f6db51e09e1e5552 (diff)
downloadbcm5719-llvm-53a70c055db21ad2dcbe3f84d51ee16cb30a77bb.tar.gz
bcm5719-llvm-53a70c055db21ad2dcbe3f84d51ee16cb30a77bb.zip
Make the implementation of DivZeroChecker private.
llvm-svn: 86288
-rw-r--r--clang/include/clang/Analysis/PathSensitive/Checkers/DivZeroChecker.h28
-rw-r--r--clang/lib/Analysis/DivZeroChecker.cpp17
-rw-r--r--clang/lib/Analysis/GRExprEngineInternalChecks.cpp14
-rw-r--r--clang/lib/Analysis/GRExprEngineInternalChecks.h5
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
OpenPOWER on IntegriCloud