[RecursiveASTVisitor] Introduce dataTraverseStmtPre()/dataTraverseStmtPost() to allow clients to do before/after actions during data recursive visitation.
This should fix the asan bot that hits stack overflow in a couple of test/Index tests.
llvm-svn: 260785
diff --git a/clang/lib/Index/IndexBody.cpp b/clang/lib/Index/IndexBody.cpp
index 56fba28..f716445 100644
--- a/clang/lib/Index/IndexBody.cpp
+++ b/clang/lib/Index/IndexBody.cpp
@@ -29,11 +29,15 @@
bool shouldWalkTypesOfTypeLocs() const { return false; }
- bool TraverseStmt(Stmt *S) {
+ bool dataTraverseStmtPre(Stmt *S) {
StmtStack.push_back(S);
- bool ret = base::TraverseStmt(S);
+ return true;
+ }
+
+ bool dataTraverseStmtPost(Stmt *S) {
+ assert(StmtStack.back() == S);
StmtStack.pop_back();
- return ret;
+ return true;
}
bool TraverseTypeLoc(TypeLoc TL) {