<div dir="ltr">Hi Jordan,<div><br></div><div><font face="arial, sans-serif">When evaluating a Binary</font><span style="font-family:arial,sans-serif;font-size:13px">AssignOperator(<i>obj.a = 1;</i>), if I use </span><i>state->getSVal(LHS, C.getLocationContext())</i>, I will get the SVal of LHS, which actually is a MemRegionVal. So I can get LHS's MemRegion via MemRegionVal. However, for my test code <span style="font-size:13px;font-family:arial,sans-serif">snippet above, </span>I've tried to use <i>state->getSVal(LHS, C.getLocationContext())</i> to get the SVal of LHS when evaluating '<i style="font-size:13px;font-family:arial,sans-serif">obj.a += sizeof(long);</i>' in <i style="font-size:13px;font-family:arial,sans-serif">void checkPostStmt(const BinaryOperator *Op, CheckerContext &C) const, </i><span style="font-size:13px;font-family:arial,sans-serif">the Analyzer gave me '0 S32b</span><span style="font-size:13px;font-family:arial,sans-serif">'. I know that '0 S32b' does be the value for obj.a. But I want to get the FieldRegion of </span><span style="font-size:13px;font-family:arial,sans-serif">obj.a, not its SVal. However, I don't know how to get its FieldRegion when evaluating </span><span style="font-size:13px;font-family:arial,sans-serif">a</span><span style="font-size:10pt;font-family:arial,sans-serif"> CompoundAssignOperator.</span></div>

<div class="gmail_extra"><br><br><div class="gmail_quote">2014/1/22 Jordan Rose <span dir="ltr"><<a href="mailto:jordan_rose@apple.com" target="_blank">jordan_rose@apple.com</a>></span><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<div style="word-wrap:break-word"><div><div><br><div><div>On Jan 21, 2014, at 5:19 , Arthur Yoo <<a href="mailto:phjy007@gmail.com" target="_blank">phjy007@gmail.com</a>> wrote:</div><br><blockquote type="cite">
<div dir="ltr"><p class="MsoNormal">Hi all,</p><p class="MsoNormal"><br></p><p class="MsoNormal"><span style="font-size:10pt">I want to get a FieldRegion when </span><span style="font-size:13px">evaluating a</span><span style="font-size:10pt"> CompoundAssignOperator. The code snippet for my test is like below:</span></p>

<div><span style="font-size:10pt"> </span><br></div><p class="MsoNormal"><span style="font-size:10pt">typedef struct {</span></p><p class="MsoNormal"><span style="font-size:10pt"><span>           </span>int a;</span></p>
<p class="MsoNormal">
<span style="font-size:10pt"><span>           </span>int *p;</span></p><p class="MsoNormal"><span style="font-size:10pt">} Obj;</span></p><p class="MsoNormal"><span style="font-size:10pt">Obj obj;</span></p><p class="MsoNormal">

<span style="font-size:10pt">obj.a = 0;</span></p><p class="MsoNormal"><span style="font-size:10pt">obj.a += sizeof(long);</span></p><div><span style="font-size:10pt"> </span><br></div><div>







































<br></div><p class="MsoNormal"><span style="font-size:10pt">When evaluating the statement
‘<i>obj.a += sizeof(long);</i>’ in the
method <i>void checkPostStmt(const
BinaryOperator *Op, CheckerContext &C) const</i>, I want to get the
FieldRegion of <i>obj.a</i>. But I don’t
know how to get it. Is there anyone can provide me a way to get <i>obj.a</i>’s FieldRegion? Thanks a lot.</span></p></div></blockquote></div><br></div></div><div>Hi, Arthur. The value of the BinaryOperator's LHS should be an SVal representing the FieldRegion. Are you not seeing that?</div>

<span><font color="#888888"><div><br></div><div>Jordan</div></font></span></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div dir="ltr"><font color="#444444">Best regards,</font><div><font color="#444444">Arthur Yoo</font></div>

</div>
</div></div>