I am just testing the cloning by calling it recursively over the AST so it goes on. It should stop at the DeclRefExpr.<br><br>Whether it might be useful or not to clone a declaration, it might be useful if you want to create a new variable declaration similar to another declaration and only change the name.<br>
<br>Moataz  <br><br><br><div class="gmail_quote">On Mon, May 18, 2009 at 8:14 PM, Douglas Gregor <span dir="ltr"><<a href="mailto:dgregor@apple.com">dgregor@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><div></div><div class="h5"><br>
On May 17, 2009, at 2:22 AM, Sebastian Redl 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;">
moataz ragab wrote:<br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Hi Sebastian,<br>
<br>
Thanks.<br>
<br>
Attached 3 files: the patch "clone.diff". should be applied on the<br>
clang directory.<br>
                        RewriteLoopUnroll.cpp you have to put it in<br>
the clang-cc directory.<br>
                        test2.c: simple testcase for a forloop with<br>
array access in the body.<br>
<br>
<br>
you can invoke the loopunroller using:<br>
<br>
../../../../Debug/bin/clang-cc -loop-unroll tests/test2.c<br>
<br>
Currently it crashes because ImplicitCastExpr object doesn't get<br>
cloned. The Stmt base class gets called instead of ImplicitCastExpr<br>
</blockquote>
It calls ImplicitCastExpr::Clone just fine. It crashes because it can't<br>
clone the VarDecl.<br>
</blockquote>
<br>
<br></div></div>
Why would we clone declarations?<br>
<br>
  - Doug<br>
</blockquote></div><br>