diff options
author | Samuel Benzaquen <sbenza@google.com> | 2014-11-17 14:55:49 +0000 |
---|---|---|
committer | Samuel Benzaquen <sbenza@google.com> | 2014-11-17 14:55:49 +0000 |
commit | 9743c9d88caa24abe30eb7e21aca1e74ae18f2a9 (patch) | |
tree | b0dad05b007af7b400e78a6798f32d3223ec82b7 /clang/lib/ASTMatchers/ASTMatchersInternal.cpp | |
parent | 4c0ef3797bbe59e44845e79bd39240427630c428 (diff) | |
download | bcm5719-llvm-9743c9d88caa24abe30eb7e21aca1e74ae18f2a9.tar.gz bcm5719-llvm-9743c9d88caa24abe30eb7e21aca1e74ae18f2a9.zip |
Remove VariadicOperatorMatcherInterface as it is redundant with logic from DynTypedMatcher.
Summary:
The generic variadic matcher is faster (one less virtual function call
per match) and doesn't require template instantiations which reduces
compile time and binary size.
Registry.cpp.o generates ~14% less symbols and compiles ~7.5% faster.
The change also speeds up our clang-tidy benchmark by ~2%.
Reviewers: klimek
Subscribers: klimek, cfe-commits
Differential Revision: http://reviews.llvm.org/D6278
llvm-svn: 222131
Diffstat (limited to 'clang/lib/ASTMatchers/ASTMatchersInternal.cpp')
-rw-r--r-- | clang/lib/ASTMatchers/ASTMatchersInternal.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/clang/lib/ASTMatchers/ASTMatchersInternal.cpp b/clang/lib/ASTMatchers/ASTMatchersInternal.cpp index 06ec76753bd..af6f0abfb9b 100644 --- a/clang/lib/ASTMatchers/ASTMatchersInternal.cpp +++ b/clang/lib/ASTMatchers/ASTMatchersInternal.cpp @@ -32,7 +32,7 @@ namespace { class VariadicMatcher : public DynMatcherInterface { public: - VariadicMatcher(VariadicOperatorFunction Func, + VariadicMatcher(DynTypedMatcher::VariadicOperatorFunction Func, std::vector<DynTypedMatcher> InnerMatchers) : Func(Func), InnerMatchers(std::move(InnerMatchers)) {} @@ -43,7 +43,7 @@ class VariadicMatcher : public DynMatcherInterface { } private: - VariadicOperatorFunction Func; + DynTypedMatcher::VariadicOperatorFunction Func; std::vector<DynTypedMatcher> InnerMatchers; }; @@ -86,7 +86,8 @@ static llvm::ManagedStatic<TrueMatcherImpl> TrueMatcherInstance; } // namespace DynTypedMatcher DynTypedMatcher::constructVariadic( - VariadicOperatorFunction Func, std::vector<DynTypedMatcher> InnerMatchers) { + DynTypedMatcher::VariadicOperatorFunction Func, + std::vector<DynTypedMatcher> InnerMatchers) { assert(InnerMatchers.size() > 0 && "Array must not be empty."); assert(std::all_of(InnerMatchers.begin(), InnerMatchers.end(), [&InnerMatchers](const DynTypedMatcher &M) { |