<div dir="ltr"><br><br><div class="gmail_quote">On Wed, Oct 15, 2008 at 3:34 PM, Ted Kremenek <span dir="ltr"><<a href="mailto:kremenek@apple.com">kremenek@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div class="Ih2E3d"><br>
On Oct 12, 2008, at 4:26 AM, Zhongxing Xu wrote:<br>
<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
This is consistent with C. But what we should care about is that we have two kinds of evaluations of expressions: lvalue evaluation and rvalue evaluation. lvalue evaluation returns the address of the object that the lvalue refers to. rvalue evaluation returns the value previously assigned to the object. This indicates we should have:<br>

<br>
AbstractVal GRExprEngine::VisitRValue(Expr* E)  (corresponds to the current GRExprEngine::Visit())<br>
and<br>
LocVal GRExprEngine::VisitLValue(Expr*)      (corresponds to the GRExprEngine::VisitLValue() in my patch)<br>
<br>
VisitRValue returns an AbstractValue because an expression's rvalue can either be location value or non-location value. And VisitLValue() always returns location value (in practice it might also return UnknownVal or UndefinedVal).<br>

</blockquote>
<br></div>
Yep, this is exactly what we do now.  I don't know if renaming Visit to VisitRValue is worth it.  Probably would make the code far more self-documenting.</blockquote><div><br>I prefer not to rename. Just having Visit and VisitLValue seems clear enough.<br>
 </div><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;"><div class="Ih2E3d"><br>
<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
lvalue-to-rvalue conversion<br>
I think this should not bother us too much. It only indicates that we should do a rvalue-evaluation of the expression.<br>
</blockquote>
<br></div>
Agreed.<br>
</blockquote></div><br></div>