[cfe-dev] Adding support for Cloning in the AST

Douglas Gregor dgregor at apple.com
Fri May 22 15:55:49 PDT 2009


On May 19, 2009, at 7:18 PM, moataz ragab wrote:

> I am just testing the cloning by calling it recursively over the AST  
> so it goes on. It should stop at the DeclRefExpr.

Okay.

> 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.


Hmmm, interesting. It seems to me like we really want to give the  
expression's Clone method some information that tells it what to do  
with declarations. For your loop-unrolling rewriter, we want to  
replace some variable declarations with other, similar variables  
(e.g., when the original variable was declared in the loop) or reuse  
the same variable declaration (if the variable is declared outside the  
loop). For my purposes, where I need to build a canonical expression,  
we replace types with their canonical types and replace some  
declarations (e.g., for non-type template parameters) with their  
"canonical" declarations. This tells me that we need to think about  
some kind of policy argument for Clone() that permits these changes.

   - Doug



More information about the cfe-dev mailing list