llvm-project/clang/lib/ASTMatchers
Richard Smith 8583872060 Use data recursion in RecursiveASTVisitor when traversing Stmt and Expr nodes.
When RAV traverses a Stmt or Expr node, if the corresponding Traverse*
functions have not been overridden, it will now use data recursion to walk
those nodes. We arrange this to be an unobservable optimization to RAV
subclasses, and to gracefully degrade as parts of the visitation are overridden
with functions that might observe the visitation.

For instance, if an RAV subclass overrides TraverseUnaryNot, we will ensure
that there are real recursive stack frames for those traversals, but we'll
use data recursion for all other traversals.

This removes the need for DataRecursiveASTVisitor, and for the
'shouldUseDataRecursionFor' extension point, both of which are removed by this
change.

llvm-svn: 253948
2015-11-24 03:09:01 +00:00
..
Dynamic Add an AST matcher for narrowing when a type is volatile-qualified. 2015-11-23 17:09:24 +00:00
ASTMatchFinder.cpp Use data recursion in RecursiveASTVisitor when traversing Stmt and Expr nodes. 2015-11-24 03:09:01 +00:00
ASTMatchersInternal.cpp [ASTMatchers] Use provided target NodeKind instead of inferring it from the matchers. 2015-07-17 16:05:27 +00:00
CMakeLists.txt ASTMatchers: Add an explicit dependency on libclangBasic. 2015-03-12 16:25:19 +00:00
Makefile First revision of the dynamic ASTMatcher library. 2013-05-14 09:13:00 +00:00