summaryrefslogtreecommitdiffstats
path: root/clang/lib/StaticAnalyzer/Core/SimpleConstraintManager.cpp
diff options
context:
space:
mode:
authorAnna Zaks <ganna@apple.com>2012-05-10 21:49:52 +0000
committerAnna Zaks <ganna@apple.com>2012-05-10 21:49:52 +0000
commitfe1ccee0f5f59dd833fa1a5e826fe3484a991c9e (patch)
treea365c6db4ee1801d18872634a6afd15eadae648b /clang/lib/StaticAnalyzer/Core/SimpleConstraintManager.cpp
parented51b9ec0bc3c3887f64b74793cd7997039fefe2 (diff)
downloadbcm5719-llvm-fe1ccee0f5f59dd833fa1a5e826fe3484a991c9e.tar.gz
bcm5719-llvm-fe1ccee0f5f59dd833fa1a5e826fe3484a991c9e.zip
[analyzer] Exit early if constraint solver is given a non-integer symbol
to reason about. As part of taint propagation, we now allow creation of non-integer symbolic expressions like a cast from int to float. Addresses PR12511 (radar://11215362). llvm-svn: 156578
Diffstat (limited to 'clang/lib/StaticAnalyzer/Core/SimpleConstraintManager.cpp')
-rw-r--r--clang/lib/StaticAnalyzer/Core/SimpleConstraintManager.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/clang/lib/StaticAnalyzer/Core/SimpleConstraintManager.cpp b/clang/lib/StaticAnalyzer/Core/SimpleConstraintManager.cpp
index 92a8eb1a7aa..5568f1ca555 100644
--- a/clang/lib/StaticAnalyzer/Core/SimpleConstraintManager.cpp
+++ b/clang/lib/StaticAnalyzer/Core/SimpleConstraintManager.cpp
@@ -137,6 +137,11 @@ SimpleConstraintManager::assumeAuxForSymbol(ProgramStateRef State,
SymbolRef Sym, bool Assumption) {
BasicValueFactory &BVF = getBasicVals();
QualType T = Sym->getType(BVF.getContext());
+
+ // None of the constraint solvers currently support non-integer types.
+ if (!T->isIntegerType())
+ return State;
+
const llvm::APSInt &zero = BVF.getValue(0, T);
if (Assumption)
return assumeSymNE(State, Sym, zero, zero);
OpenPOWER on IntegriCloud