summaryrefslogtreecommitdiffstats
path: root/clang/lib/Analysis/GRSimpleVals.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/Analysis/GRSimpleVals.cpp')
-rw-r--r--clang/lib/Analysis/GRSimpleVals.cpp15
1 files changed, 10 insertions, 5 deletions
diff --git a/clang/lib/Analysis/GRSimpleVals.cpp b/clang/lib/Analysis/GRSimpleVals.cpp
index e2dde76e200..22ccd7b8aa9 100644
--- a/clang/lib/Analysis/GRSimpleVals.cpp
+++ b/clang/lib/Analysis/GRSimpleVals.cpp
@@ -230,11 +230,16 @@ SVal GRSimpleVals::DetermEvalBinOpNN(GRExprEngine& Eng,
case nonloc::SymbolValKind:
if (isa<nonloc::ConcreteInt>(R)) {
- const SymIntConstraint& C =
- BasicVals.getConstraint(cast<nonloc::SymbolVal>(L).getSymbol(), Op,
- cast<nonloc::ConcreteInt>(R).getValue());
-
- return nonloc::SymIntConstraintVal(C);
+ if (Op >= BinaryOperator::LT && Op <= BinaryOperator::NE) {
+ const SymIntConstraint& C =
+ BasicVals.getConstraint(cast<nonloc::SymbolVal>(L).getSymbol(),
+ Op, cast<nonloc::ConcreteInt>(R).getValue());
+ return nonloc::SymIntConstraintVal(C);
+ } else {
+ return NonLoc::MakeVal(Eng.getSymbolManager(),
+ cast<nonloc::SymbolVal>(L).getSymbol(),
+ Op, cast<nonloc::ConcreteInt>(R).getValue());
+ }
}
else
return UnknownVal();
OpenPOWER on IntegriCloud