I dont know if this helps but this sort of an issue apparently crops up during the un-SSA phase, if copy propagation is done on SSA'ed code.  The exact problem is mentioned in (the Lost Copy problem) "Practical Improvements to the Construction and Destruction of Static Single Assignment Form". Since there is no explicit assignment (copy) instruction in LLVM, I dont know if this is a problem here.<br>
<br>regards,<br>Prakash<br><br><br><div class="gmail_quote">On Tue, Jan 27, 2009 at 7:28 PM, Eli Friedman <span dir="ltr"><<a href="mailto:eli.friedman@gmail.com">eli.friedman@gmail.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">On Tue, Jan 27, 2009 at 2:54 PM, David Greene <<a href="mailto:dag@cray.com">dag@cray.com</a>> wrote:<br>
> How do I go about creating the copy t = x?  I don't want to use an add with a<br>
> zero constant because it may not be optimized in all circustations (floating<br>
> point, for example).<br>
<br>
</div>You can use a no-op bitcast for scalars, but there isn't any reliable<br>
way to do it for all first-class values.  That said, I don't quite<br>
follow the issue.  This is SSA, so the only way a value can change is<br>
if you change the code.<br>
<br>
I'm not really following what the issue is in this testcase, though,<br>
so I could be missing something.  The way you're describing it,<br>
mem2reg appears to be working as intended; the correct completion is<br>
in fact as follows:<br>
         //   x = phi(x.0, expr)<br>
         //   y = phi(y.0, x)<br>
<div class="Ih2E3d"><br>
> In this particular example another solution would be to reorder the phis but I<br>
> don't think that will work in the general case.<br>
<br>
</div>PHI nodes don't have an ordering, at least conceptually; they're not<br>
real instructions.<br>
<font color="#888888"><br>
-Eli<br>
</font><div><div></div><div class="Wj3C7c">_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a href="http://llvm.cs.uiuc.edu" target="_blank">http://llvm.cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a><br>
</div></div></blockquote></div><br>