Patch by Ben Laurie:
ConstraintManager:
- constify getSymVal()
BasicConstraintManager:
- Pull out logic that would be common to ConstraintManagers of a similar nature
and put them in a parent class called 'SimpleConstraintManager'.
RangeConstraintManager:
- Added a new prototype ConstraintManager to track ranges of variables! This
ConstraintManager keeps tracks of ranges of concrete integers that a symbolic
integer may have.
AnalysisConsumer:
- Add driver option to use RangeConstraintManager with GRExprEngine-based
analyses.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@64558 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Driver/AnalysisConsumer.cpp b/Driver/AnalysisConsumer.cpp
index a5c253c..007a51d 100644
--- a/Driver/AnalysisConsumer.cpp
+++ b/Driver/AnalysisConsumer.cpp
@@ -48,6 +48,11 @@
llvm::cl::init(true),
llvm::cl::desc("Remove dead symbols, bindings, and constraints before"
" processing a statement."));
+static llvm::cl::opt<bool>
+UseRanges("analyzer-range-constraints",
+ llvm::cl::init(true),
+ llvm::cl::desc("Use the range constraint manager instead of the basic"
+ " constraint manager"));
//===----------------------------------------------------------------------===//
// Basic type definitions.
@@ -288,6 +293,8 @@
if (ManagerRegistry::ConstraintMgrCreator != 0)
CreateConstraintMgr = ManagerRegistry::ConstraintMgrCreator;
+ else if (UseRanges)
+ CreateConstraintMgr = CreateRangeConstraintManager;
else
CreateConstraintMgr = CreateBasicConstraintManager;