diff options
Diffstat (limited to 'clang/lib/Analysis/GRSimpleVals.cpp')
| -rw-r--r-- | clang/lib/Analysis/GRSimpleVals.cpp | 15 |
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(); |

