[cfe-dev] Is it possible to clone a node in an AST?

Jorge Fernández Fabeiro fabeirojorge at gmail.com
Thu May 3 05:14:43 PDT 2012


I'm working on a tool that do some source-to-source transformations of an
OpenCL kernel mainly using the Rewriter class of the Clang C++ API.
However, now I want to do some more complex transformations, and in order
to do them I'd need to clone a ForStmt node of an AST and add its copy at
the same level of the tree (i.e., I want to create a copy of the node and
just after add it to the tree as a sibling node of the original ForStmt).

I know that I can do it very simply using the Rewriter class, but the
cloning is just the first step of a more complex transformation that can't
be done properly if I just rewrite the loop: I want to do some auxiliary
transformations in the cloned loop and I need to access to its different
parts using the ForStmt functions (GetBody(), GetInc(), GetCond()...).

In summary, and returning to the subject of this mail, is it possible to
clone a node in an AST using the Clang C++ API?

Thank you so much in advance,

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20120503/94621a8b/attachment.html>

More information about the cfe-dev mailing list