[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 01:34:44 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:
@steakhal This part might affect the default range solver. Can you double check that this makes sense? This change is to get rid of the cast that makes RHSVal truncated to B->getType().
https://github.com/llvm/llvm-project/pull/210525
More information about the cfe-commits
mailing list