]> granicus.if.org Git - clang/commit
Implements memoization for ancestor matching.
authorManuel Klimek <klimek@google.com>
Thu, 14 Mar 2013 16:33:21 +0000 (16:33 +0000)
committerManuel Klimek <klimek@google.com>
Thu, 14 Mar 2013 16:33:21 +0000 (16:33 +0000)
commit374516c8ec4f0fcf5a8b65ef9cf029f862d11096
treefc5f8057c23cbd1695d10162f65466be695b9421
parentf753615897c86928517e48e4d106e669d59618c5
Implements memoization for ancestor matching.

This yields a log(#ast_nodes) worst-case improvement with matchers like
stmt(unless(hasAncestor(...))).

Also made the order of visitation for ancestor matches BFS, as the most
common use cases (for example finding the closest enclosing function
definition) rely on that.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@177081 91177308-0d34-0410-b5e6-96231b3b80d8
lib/ASTMatchers/ASTMatchFinder.cpp
unittests/ASTMatchers/ASTMatchersTest.cpp