58 SVal LeftV = state->getSVal(LHS, LCtx);
59 SVal RightV = state->getSVal(RHS, LCtx);
63 if (Op == BO_Assign) {
74 evalStore(Tmp2, B, LHS, *it, state->BindExpr(B, LCtx, ExprVal),
87 RightV, LeftV, RHS, svalBuilder, Count, LCtx);
89 LeftV, RightV, LHS, svalBuilder, Count, LCtx);
96 state = createTemporaryRegionIfNeeded(state, LCtx, LHS);
101 if (!
Result.isUnknown()) {
102 state = state->BindExpr(B, LCtx,
Result);
117 llvm_unreachable(
"Invalid opcode for compound assignment.");
118 case BO_MulAssign: Op = BO_Mul;
break;
119 case BO_DivAssign: Op = BO_Div;
break;
120 case BO_RemAssign: Op = BO_Rem;
break;
121 case BO_AddAssign: Op = BO_Add;
break;
122 case BO_SubAssign: Op = BO_Sub;
break;
123 case BO_ShlAssign: Op = BO_Shl;
break;
124 case BO_ShrAssign: Op = BO_Shr;
break;
125 case BO_AndAssign: Op = BO_And;
break;
126 case BO_XorAssign: Op = BO_Xor;
break;
127 case BO_OrAssign: Op = BO_Or;
break;
133 SVal location = LeftV;
134 evalLoad(Tmp, B, LHS, *it, state, location);
137 state = N->getState();
139 SVal V = state->getSVal(LHS, LCtx);
143 cast<CompoundAssignOperator>(B)->getComputationResultType();
147 cast<CompoundAssignOperator>(B)->getComputationLHSType();
181 state = state->BindExpr(B, LCtx, location);
183 state = state->BindExpr(B, LCtx,
Result);
185 evalStore(Tmp2, B, LHS, N, state, location, LHSVal);
209 dyn_cast_or_null<BlockDataRegion>(
V.getAsRegion())) {
211 auto ReferencedVars = BDR->referenced_vars();
214 for (
auto Var : ReferencedVars) {
215 const VarRegion *capturedR = Var.getCapturedRegion();
224 const Expr *copyExpr =
nullptr;
226 assert(CI->getVariable() == capturedR->
getDecl());
227 copyExpr = CI->getCopyExpr();
231 if (capturedR != originalR) {
235 originalV = State->getSVal(copyExpr, LCtx);
266 SVal OrigV = state->getSVal(Ex, LCtx);
270 if (CastE->
getCastKind() == CK_BooleanToSignedIntegral &&
V.isValid())
273 state = state->BindExpr(CastE, LCtx,
V);
289 CastE->
getCastKind() == CK_LValueToRValueBitCast) {
293 evalLoad(Dst, CastE, CastE, subExprNode, state, state->getSVal(Ex, LCtx));
302 if (
const ExplicitCastExpr *ExCast=dyn_cast_or_null<ExplicitCastExpr>(CastE))
303 T = ExCast->getTypeAsWritten();