Guessing this or one of the related patches introduced this build breakage? I haven't looked at it too carefully yet...
http://lab.llvm.org:8011/builders/clang-x86_64-ubuntu-gdb-75/builds/26570/steps/compile/logs/stdio On Mon, Nov 23, 2015 at 11:13 PM, Richard Smith via cfe-commits < cfe-commits@lists.llvm.org> wrote: > Author: rsmith > Date: Tue Nov 24 01:13:06 2015 > New Revision: 253958 > > URL: http://llvm.org/viewvc/llvm-project?rev=253958&view=rev > Log: > Reduce the stack usage per recursive step when RecursiveASTVisitor cannot > perform data recursion. > > Modified: > cfe/trunk/include/clang/AST/RecursiveASTVisitor.h > > Modified: cfe/trunk/include/clang/AST/RecursiveASTVisitor.h > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/RecursiveASTVisitor.h?rev=253958&r1=253957&r2=253958&view=diff > > ============================================================================== > --- cfe/trunk/include/clang/AST/RecursiveASTVisitor.h (original) > +++ cfe/trunk/include/clang/AST/RecursiveASTVisitor.h Tue Nov 24 01:13:06 > 2015 > @@ -471,28 +471,10 @@ private: > /// \brief Process clauses with list of variables. > template <typename T> bool VisitOMPClauseList(T *Node); > > - bool dataTraverse(Stmt *S); > bool dataTraverseNode(Stmt *S, DataRecursionQueue *Queue); > }; > > template <typename Derived> > -bool RecursiveASTVisitor<Derived>::dataTraverse(Stmt *S) { > - SmallVector<Stmt*, 16> Queue; > - Queue.push_back(S); > - > - while (!Queue.empty()) { > - Stmt *CurrS = Queue.pop_back_val(); > - > - size_t N = Queue.size(); > - TRY_TO(dataTraverseNode(CurrS, &Queue)); > - // Process new children in the order they were added. > - std::reverse(Queue.begin() + N, Queue.end()); > - } > - > - return true; > -} > - > -template <typename Derived> > bool RecursiveASTVisitor<Derived>::dataTraverseNode(Stmt *S, > DataRecursionQueue > *Queue) { > #define DISPATCH_STMT(NAME, CLASS, VAR) > \ > @@ -561,10 +543,23 @@ bool RecursiveASTVisitor<Derived>::Trave > &RecursiveASTVisitor::TraverseStmt>::value) > return dataTraverseNode(S, nullptr); > > - if (!Queue) > - return dataTraverse(S); > + if (Queue) { > + Queue->push_back(S); > + return true; > + } > + > + SmallVector<Stmt *, 8> LocalQueue; > + LocalQueue.push_back(S); > + > + while (!LocalQueue.empty()) { > + Stmt *CurrS = LocalQueue.pop_back_val(); > + > + size_t N = LocalQueue.size(); > + TRY_TO(dataTraverseNode(CurrS, &LocalQueue)); > + // Process new children in the order they were added. > + std::reverse(LocalQueue.begin() + N, LocalQueue.end()); > + } > > - Queue->push_back(S); > return true; > } > > > > _______________________________________________ > cfe-commits mailing list > cfe-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits