[cfe-dev] AST processing toolbox

Chris Lattner clattner at apple.com
Fri Jun 12 13:47:36 PDT 2009


On Jun 12, 2009, at 3:14 AM, Olaf Krzikalla wrote:
> now I'm quite finished with the very first part of my AST processing -
> function inlining at AST level.
> One result of the development are a lot of AST processing tools that  
> can
> become handy for others too - cloning, garbage collecting aso. Of  
> course
> I'm eager to share these stuff. However there are some issues to solve
> before:

Cool.

> 1. I use boost, in particular boost::bind and boost::function (that  
> is,

discussed elsewhere :).  We do have a simple llvm::tie function in  
llvm/ADT/STLExtras.h if you want, this allows you to write code like:

int x, y;
tie(x, y) = my_fn_returning_pair_of_ints();

However, there is a bigger issue here: in the absence of c++ lambdas, c 
++ code that uses a highly functional style is often very difficult to  
read.  Are you sure that using these actually helps improve the  
readability of your code?

> 2. Sometimes it seemed to me that having a parent member in a  
> statement
> would be better then the ParentMap. Nevertheless I worked with  
> ParentMap
> but needed to add ParentMap::addStmt, which adds and/or updates the
> parent/child relations of the given Stmt tree. However I'm not really
> satisfied with the function name yet.

Improving parentmap sounds great!  Feel free to propose this as a  
patch independent of your other changes.

> 3. I'd like to extend the PrintingPolicy so we can rewrite in other
> styles too, e.g.

This seems reasonable.

> For all the new stuff: where to put in? Or is it better to create a
> separate ASTProcessing library?

It is best to split up your changes into logically independent ones:  
different pieces probably go in different places.  Thanks for working  
on this!

-Chris



More information about the cfe-dev mailing list