]> granicus.if.org Git - clang/commitdiff
Reduce ASTMatchers stack footprint. Addresses http://llvm.org/PR38851
authorAlexander Kornienko <alexfh@google.com>
Tue, 15 Jan 2019 15:34:26 +0000 (15:34 +0000)
committerAlexander Kornienko <alexfh@google.com>
Tue, 15 Jan 2019 15:34:26 +0000 (15:34 +0000)
The BoundNodesTreeBuilder class is used both directly and indirectly as a local
variable in matchesAncestorOfRecursively, memoizedMatchesAncestorOfRecursively
and other functions that happen to be on long recursive call paths. By reducing
the inline storage size of the SmallVector we dramatically reduce the stack
requirements of ASTMatchers. Running clang-tidy with a large number of checks
enabled on a few arbitrarily chosen files show no performance regression.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@351196 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/ASTMatchers/ASTMatchersInternal.h

index 9d9f867d053ad42f56f7e8baec1f00f3ea9da778..34851a907e0d065b7ad9f15b017d9dedcbe817f2 100644 (file)
@@ -261,7 +261,7 @@ public:
   }
 
 private:
-  SmallVector<BoundNodesMap, 16> Bindings;
+  SmallVector<BoundNodesMap, 1> Bindings;
 };
 
 class ASTMatchFinder;