rjmccall added a comment. In https://reviews.llvm.org/D47096#1105374, @jfb wrote:
> In https://reviews.llvm.org/D47096#1105368, @rjmccall wrote: > > > RecursiveASTVisitor instantiations are huge. Can you just make the > > function take a Stmt and then do the first few checks if it happens to be > > an Expr? > > > I'm not super-familiar with the code, so I might be doing something silly. > > I did something like this initially (leave the top of the function as-is, and > instead of cast do dyn_cast to Expr and if that fails to CompoundStmt, > recursively iterating all the children of the CompoundStmt). My worry was > that I wasn't traversing all actual children (just CompountStmt's children), > and AFAICT there's no easy way to say "take any Stmt, and visit its children > if it has such a method". I could hard-code more Stmt derivatives but that > seems brittle, I could use the "detection idiom" but that's silly if there's > already a visitor which does The Right Thing through tablegen magic. > > What I can do is what I did earlier, and conservatively say it was captured > if it's neither an Expr nor a CompoundStmt? Or should I special-case other > things as well? `children()` is actually defined at the `Stmt` level, and if you look at how it's implemented on e.g. `IfStmt`, you can see that it visits all of the child `Stmt`s, including the if-condition. So it should be fine. Repository: rC Clang https://reviews.llvm.org/D47096 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits