[clang] [llvm] [analyzer] Fix _BitInt support & casting behavior for Z3 symbolic execution (PR #210525)

via cfe-commits cfe-commits at lists.llvm.org
Sun Jul 19 03:15:45 PDT 2026


================
@@ -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:

If the source file is switched to C, it reports both FALSE and TRUE on trunk: https://godbolt.org/z/Wr7hxqs9W

https://github.com/llvm/llvm-project/pull/210525


More information about the cfe-commits mailing list