<div dir="ltr"><div>Hi list,</div><div><br></div><div>I am writing a static analyzer checker and trying to model a function of the following type in check::PostCall:</div><div><br></div><div>void func(bool* outParam) {</div><div>    assert(outParam);<br></div><div>    *outParam = true;</div><div>}<br></div><div><br></div><div>(in real life there are some other inputs that determine the value stored in the out parameter, and a return value indicating whether there was an error, but let's use this for the sake of a simple example)</div><div><br></div><div>Suppose I want my PostCall callback to store "true" in *outParam. Is this possible to achieve with ProgramState::BindExpr or ProgramState::bindLoc? How do I get the SVal for the memory pointed to by CallEvent::getArgSVal(0)?</div><div><br></div><div>I thought of "synthesizing" a UnaryOperator expression using UO_Deref on CallEvent::getArgExpr(0) and passing that to ProgramState::BindExpr, but it seems that getArgExpr returns a const Expr* and a non-const one is required to construct a UnaryOperator expression.</div><div><br></div><div>Best regards,<br></div><div>-- <br><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature">Philip</div></div></div>