Unfortunately, that change breaks the Clang compilation, see r254041 review thread.
On Tue, Nov 24, 2015 at 3:54 PM, Richard Smith <rich...@metafoo.co.uk> wrote: > On Tue, Nov 24, 2015 at 1:16 PM, Alexey Samsonov <vonos...@gmail.com> > wrote: > >> Looks like Clang::Index/index-many-call-ops.cpp still uses too much stack >> in ASan mode: >> >> http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-bootstrap/builds/10177/steps/check-clang%20asan/logs/stdio >> >> ASan increases the stack usage, so do you think there's more to fix here, >> or we should just disable the test under ASan? >> > > I think this should work even under ASan conditions; fixed in r254041. > > >> 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 >>> >> >> >> >> -- >> Alexey Samsonov >> vonos...@gmail.com >> > > -- Alexey Samsonov vonos...@gmail.com
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits