diff options
author | Dominic Chen <d.c.ddcc@gmail.com> | 2017-07-12 21:43:42 +0000 |
---|---|---|
committer | Dominic Chen <d.c.ddcc@gmail.com> | 2017-07-12 21:43:42 +0000 |
commit | c0402c6916709f7982ca171075cc47b2f0cb6bad (patch) | |
tree | 982e4c2127eb1f5f6f71ea5fe2038837deaa6eb4 /clang/lib/StaticAnalyzer/Core/SValBuilder.cpp | |
parent | 845b9813296460d52a1759a2c124f4069716d170 (diff) | |
download | bcm5719-llvm-c0402c6916709f7982ca171075cc47b2f0cb6bad.tar.gz bcm5719-llvm-c0402c6916709f7982ca171075cc47b2f0cb6bad.zip |
Revert "[analyzer] Support generating and reasoning over more symbolic constraint types"
Assertion `Loc::isLocType(SSE->getLHS()->getType())' failed in Analysis/PR3991.m
This reverts commit e469ff2759275e67f9072b3d67fac90f647c0fe6.
llvm-svn: 307853
Diffstat (limited to 'clang/lib/StaticAnalyzer/Core/SValBuilder.cpp')
-rw-r--r-- | clang/lib/StaticAnalyzer/Core/SValBuilder.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp b/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp index d3b78a055c4..04452e3e7cc 100644 --- a/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp +++ b/clang/lib/StaticAnalyzer/Core/SValBuilder.cpp @@ -100,7 +100,7 @@ SValBuilder::getRegionValueSymbolVal(const TypedValueRegion* region) { if (T->isNullPtrType()) return makeZeroVal(T); - + if (!SymbolManager::canSymbolicate(T)) return UnknownVal(); @@ -354,6 +354,9 @@ SVal SValBuilder::makeSymExprValNN(ProgramStateRef State, BinaryOperator::Opcode Op, NonLoc LHS, NonLoc RHS, QualType ResultTy) { + if (!State->isTainted(RHS) && !State->isTainted(LHS)) + return UnknownVal(); + const SymExpr *symLHS = LHS.getAsSymExpr(); const SymExpr *symRHS = RHS.getAsSymExpr(); // TODO: When the Max Complexity is reached, we should conjure a symbol @@ -361,7 +364,7 @@ SVal SValBuilder::makeSymExprValNN(ProgramStateRef State, const unsigned MaxComp = 10000; // 100000 28X if (symLHS && symRHS && - (symLHS->computeComplexity() + symRHS->computeComplexity()) < MaxComp) + (symLHS->computeComplexity() + symRHS->computeComplexity()) < MaxComp) return makeNonLoc(symLHS, Op, symRHS, ResultTy); if (symLHS && symLHS->computeComplexity() < MaxComp) |