================
@@ -750,10 +729,8 @@ void ExprEngine::VisitLogicalExpr(const BinaryOperator* B, 
ExplodedNode *Pred,
       // We evaluate "RHSVal != 0" expression which result in 0 if the value is
       // known to be false, 1 if the value is known to be true and a new symbol
       // when the assumption is unknown.
-      nonloc::ConcreteInt Zero(getBasicVals().getValue(0, B->getType()));
-      X = evalBinOp(N->getState(), BO_NE,
-                    svalBuilder.evalCast(RHSVal, B->getType(), RHS->getType()),
-                    Zero, B->getType());
+      X = evalBinOp(N->getState(), BO_NE, RHSVal,
+                    svalBuilder.makeZeroVal(RHS->getType()), B->getType());
----------------
rdevshp wrote:

The added test case in z3-logicalexpre-eval.c 
```
void wide_bitint_logical_truth_value(unsigned _BitInt(63) x) {
  clang_analyzer_eval((1 && x) == (x != 0)); // expected-warning{{TRUE}}
}
```
is to check for regressions for this issue.

https://github.com/llvm/llvm-project/pull/210525
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to