summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaDeclObjC.cpp
diff options
context:
space:
mode:
authorRichard Smith <richard-llvm@metafoo.co.uk>2015-11-24 03:09:01 +0000
committerRichard Smith <richard-llvm@metafoo.co.uk>2015-11-24 03:09:01 +0000
commit8583872060cd2157e0be2ebd4c34e71355facee5 (patch)
tree5af7abb94e67454325ab11d193236f9b31c2a1d1 /clang/lib/Sema/SemaDeclObjC.cpp
parentd977f4ab99389a8f8b87d7bf950a8d111f148f9a (diff)
downloadbcm5719-llvm-8583872060cd2157e0be2ebd4c34e71355facee5.tar.gz
bcm5719-llvm-8583872060cd2157e0be2ebd4c34e71355facee5.zip
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
Diffstat (limited to 'clang/lib/Sema/SemaDeclObjC.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud