summaryrefslogtreecommitdiffstats
path: root/clang/Driver/AnalysisConsumer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/Driver/AnalysisConsumer.cpp')
-rw-r--r--clang/Driver/AnalysisConsumer.cpp40
1 files changed, 27 insertions, 13 deletions
diff --git a/clang/Driver/AnalysisConsumer.cpp b/clang/Driver/AnalysisConsumer.cpp
index 57be0ff55d6..ea2418610ec 100644
--- a/clang/Driver/AnalysisConsumer.cpp
+++ b/clang/Driver/AnalysisConsumer.cpp
@@ -227,24 +227,30 @@ static void ActionUninitVals(AnalysisManager& mgr) {
}
-static void ActionRefLeakCheckerAux(AnalysisManager& mgr, bool GCEnabled,
- bool StandardWarnings) {
-
+static void ActionGRExprEngine(AnalysisManager& mgr, GRTransferFuncs* tf) {
+
+ llvm::OwningPtr<GRTransferFuncs> TF(tf);
+
// Construct the analysis engine.
- GRExprEngine Eng(*mgr.getCFG(), *mgr.getCodeDecl(), mgr.getContext());
+ GRExprEngine Eng(*mgr.getCFG(), *mgr.getCodeDecl(), mgr.getContext());
+ Eng.setTransferFunctions(tf);
- // Construct the transfer function object.
- llvm::OwningPtr<GRTransferFuncs>
- TF(MakeCFRefCountTF(mgr.getContext(), GCEnabled, StandardWarnings,
- mgr.getLangOptions()));
-
- Eng.setTransferFunctions(TF.get());
-
// Execute the worklist algorithm.
Eng.ExecuteWorkList();
-
+
// Display warnings.
- Eng.EmitWarnings(mgr.getDiagnostic(), mgr.getPathDiagnosticClient());
+ Eng.EmitWarnings(mgr.getDiagnostic(), mgr.getPathDiagnosticClient());
+}
+
+static void ActionRefLeakCheckerAux(AnalysisManager& mgr, bool GCEnabled,
+ bool StandardWarnings) {
+
+ GRTransferFuncs* TF = MakeCFRefCountTF(mgr.getContext(),
+ GCEnabled,
+ StandardWarnings,
+ mgr.getLangOptions());
+
+ ActionGRExprEngine(mgr, TF);
}
static void ActionRefLeakChecker(AnalysisManager& mgr) {
@@ -267,6 +273,10 @@ static void ActionRefLeakChecker(AnalysisManager& mgr) {
}
}
+static void ActionSimpleChecks(AnalysisManager& mgr) {
+ ActionGRExprEngine(mgr, MakeGRSimpleValsTF());
+}
+
//===----------------------------------------------------------------------===//
// AnalysisConsumer creation.
//===----------------------------------------------------------------------===//
@@ -298,6 +308,10 @@ ASTConsumer* clang::CreateAnalysisConsumer(Analyses* Beg, Analyses* End,
C->addCodeAction(&ActionRefLeakChecker);
break;
+ case CheckerSimple:
+ C->addCodeAction(&ActionSimpleChecks);
+ break;
+
default: break;
}
OpenPOWER on IntegriCloud