diff options
author | Ted Kremenek <kremenek@apple.com> | 2009-11-13 18:46:29 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2009-11-13 18:46:29 +0000 |
commit | 8382cf57b722f130f1a6b45380639871c07271c1 (patch) | |
tree | c4ca46c9d83c2985986e7149ae1d731e68f1e0f1 /lib | |
parent | 79b680ea869983d62b84a9175eeb6b6efb376326 (diff) |
Add clang-cc option "--analyzer-experimental-internal-checks". This
option enables new "internal" checks that will eventually be turned on
by default but still require broader testing.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@88671 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Analysis/GRExprEngineExperimentalChecks.cpp | 16 | ||||
-rw-r--r-- | lib/Analysis/GRExprEngineInternalChecks.cpp | 7 | ||||
-rw-r--r-- | lib/Frontend/AnalysisConsumer.cpp | 4 |
3 files changed, 19 insertions, 8 deletions
diff --git a/lib/Analysis/GRExprEngineExperimentalChecks.cpp b/lib/Analysis/GRExprEngineExperimentalChecks.cpp index 75f97898ff..2fb7e9fa48 100644 --- a/lib/Analysis/GRExprEngineExperimentalChecks.cpp +++ b/lib/Analysis/GRExprEngineExperimentalChecks.cpp @@ -12,13 +12,27 @@ // //===----------------------------------------------------------------------===// +#include "GRExprEngineInternalChecks.h" #include "GRExprEngineExperimentalChecks.h" #include "clang/Analysis/LocalCheckers.h" using namespace clang; -void clang::RegisterExperimentalChecks(GRExprEngine &Eng) { +void clang::RegisterExperimentalChecks(GRExprEngine &Eng) { + // These are checks that never belong as internal checks + // within GRExprEngine. RegisterPthreadLockChecker(Eng); RegisterMallocChecker(Eng); } +void clang::RegisterExperimentalInternalChecks(GRExprEngine &Eng) { + // These are internal checks that should eventually migrate to + // RegisterInternalChecks() once they have been further tested. + + // Note that this must be registered after ReturnStackAddresEngsChecker. + RegisterReturnPointerRangeChecker(Eng); + RegisterPointerSubChecker(Eng); + RegisterPointerArithChecker(Eng); + RegisterCastToStructChecker(Eng); + RegisterArrayBoundChecker(Eng); +} diff --git a/lib/Analysis/GRExprEngineInternalChecks.cpp b/lib/Analysis/GRExprEngineInternalChecks.cpp index dc01b96d92..d0f60fde5b 100644 --- a/lib/Analysis/GRExprEngineInternalChecks.cpp +++ b/lib/Analysis/GRExprEngineInternalChecks.cpp @@ -395,13 +395,6 @@ void GRExprEngine::RegisterInternalChecks() { RegisterDivZeroChecker(*this); RegisterReturnStackAddressChecker(*this); RegisterReturnUndefChecker(*this); - RegisterPointerSubChecker(*this); - RegisterPointerArithChecker(*this); RegisterFixedAddressChecker(*this); - // Note that this must be registered after ReturnStackAddressChecker. - RegisterReturnPointerRangeChecker(*this); - - RegisterCastToStructChecker(*this); - RegisterArrayBoundChecker(*this); RegisterUndefinedArraySubscriptChecker(*this); } diff --git a/lib/Frontend/AnalysisConsumer.cpp b/lib/Frontend/AnalysisConsumer.cpp index e8bd920d41..b0799af3bf 100644 --- a/lib/Frontend/AnalysisConsumer.cpp +++ b/lib/Frontend/AnalysisConsumer.cpp @@ -331,6 +331,10 @@ static void ActionGRExprEngine(AnalysisConsumer &C, AnalysisManager& mgr, Decl * Eng.setTransferFunctions(tf); Eng.RegisterInternalChecks(); // FIXME: Internal checks should just // automatically register. + + if (C.Opts.EnableExperimentalInternalChecks) + RegisterExperimentalInternalChecks(Eng); + RegisterAppleChecks(Eng, *D); if (C.Opts.EnableExperimentalChecks) |