<br><br><div class="gmail_quote">On Thu, Jun 3, 2010 at 12:21 PM, Zhongxing Xu <span dir="ltr"><<a href="mailto:xuzhongxing@gmail.com">xuzhongxing@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
Hi Jordy,<br><br>One small suggestion: It's easier to review if each patch only solves one specific problem. We'd like small patches that fix one well defined and isolated problem.<br><br>Comments below:<br><br>Index: lib/Analysis/CFG.cpp<br>

===================================================================<br>--- lib/Analysis/CFG.cpp    (revision 105255)<br>+++ lib/Analysis/CFG.cpp    (working copy)<br>@@ -538,6 +538,15 @@<br>     addStmt(B->getRHS());<br>

     return addStmt(B->getLHS());<br>   }<br>+  else if (B->isAssignmentOp()) {<br>+    if (asc.alwaysAdd()) {<br>+      autoCreateBlock();<br>+      AppendStmt(Block, B, asc);<br>+    }<br>+    <br>+    addStmt(B->getRHS());<br>

<br>Is it necessary to add all RHS of assignment expr as block-level expr?<br><br>+    return addStmt(B->getLHS(), AddStmtChoice::AsLValueNotAlwaysAdd);<br>+  }<br></blockquote><div><br>Here better to use visitStmt, because addStmt() means we want to 'add' the statement. Maybe we should modify some of the existing code to emphasize this.<br>
 </div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"> <br><br><div class="gmail_quote"><div><div></div><div class="h5">On Thu, Jun 3, 2010 at 6:19 AM, Jordy Rose <span dir="ltr"><<a href="mailto:jediknil@belkadan.com" target="_blank">jediknil@belkadan.com</a>></span> wrote:<br>

</div></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;"><div><div></div><div class="h5">Fixes a crasher, by allowing CallExprs to be lvalues, and making sure<br>

assignment LHSes are treated as lvalues.<br>
<br>
char& ref();<br>
void t5 () {<br>
  ref() = 'c';<br>
}<br>
<br>
And an incorrect "undefined dereference" warning, by noting that assigning<br>
to a reference variable does not kill its value.<br>
<br>
char t1 () {<br>
  char& r = ref();<br>
  r = 'c'; // no-warning<br>
  if (r) return r;<br>
  return *(char*)0; // no-warning<br>
}<br></div></div><div class="im">_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@cs.uiuc.edu" target="_blank">cfe-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits</a><br>
<br></div></blockquote></div><br>
</blockquote></div><br>