summaryrefslogtreecommitdiffstats
path: root/clang/lib/ASTMatchers/ASTMatchersInternal.cpp
diff options
context:
space:
mode:
authorSamuel Benzaquen <sbenza@google.com>2014-11-17 14:55:49 +0000
committerSamuel Benzaquen <sbenza@google.com>2014-11-17 14:55:49 +0000
commit9743c9d88caa24abe30eb7e21aca1e74ae18f2a9 (patch)
treeb0dad05b007af7b400e78a6798f32d3223ec82b7 /clang/lib/ASTMatchers/ASTMatchersInternal.cpp
parent4c0ef3797bbe59e44845e79bd39240427630c428 (diff)
downloadbcm5719-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.cpp7
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) {
OpenPOWER on IntegriCloud