[cfe-commits] r152820 - in /cfe/trunk: include/clang/AST/RecursiveASTVisitor.h test/Index/index-many-logical-ops.c
Matt Beaumont-Gay
matthewbg at google.com
Fri Mar 16 20:00:07 PDT 2012
Hi Argyrios,
This changes the behavior of RAV subclasses which override the
Traverse* methods. Is that intended?
Thanks,
Matt
On Thu, Mar 15, 2012 at 11:07, Argyrios Kyrtzidis <akyrtzi at gmail.com> wrote:
> Author: akirtzidis
> Date: Thu Mar 15 13:07:19 2012
> New Revision: 152820
>
> URL: http://llvm.org/viewvc/llvm-project?rev=152820&view=rev
> Log:
> Make RecursiveASTVisitor to traverse certain statements using data recursion
> to avoid a stack overflow with extreme cases.
>
> Part of rdar://10941790.
>
> Added:
> cfe/trunk/test/Index/index-many-logical-ops.c
> 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=152820&r1=152819&r2=152820&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/AST/RecursiveASTVisitor.h (original)
> +++ cfe/trunk/include/clang/AST/RecursiveASTVisitor.h Thu Mar 15 13:07:19 2012
> @@ -148,6 +148,12 @@
> /// TypeLocs.
> bool shouldWalkTypesOfTypeLocs() const { return true; }
>
> + /// \brief Return whether \param S should be traversed using data recursion
> + /// to avoid a stack overflow with extreme cases.
> + bool shouldUseDataRecursionFor(Stmt *S) const {
> + return isa<BinaryOperator>(S) || isa<UnaryOperator>(S) || isa<CaseStmt>(S);
> + }
> +
> /// \brief Recursively visit a statement or expression, by
> /// dispatching to Traverse*() based on the argument's dynamic type.
> ///
> @@ -397,8 +403,102 @@
> bool TraverseDeclContextHelper(DeclContext *DC);
> bool TraverseFunctionHelper(FunctionDecl *D);
> bool TraverseVarHelper(VarDecl *D);
> +
> + bool Walk(Stmt *S);
> +
> + struct EnqueueJob {
> + Stmt *S;
> + Stmt::child_iterator StmtIt;
> +
> + EnqueueJob(Stmt *S) : S(S), StmtIt() {
> + if (Expr *E = dyn_cast_or_null<Expr>(S))
> + S = E->IgnoreParens();
> + }
> + };
> + bool dataTraverse(Stmt *S);
> };
>
> +template<typename Derived>
> +bool RecursiveASTVisitor<Derived>::dataTraverse(Stmt *S) {
> +
> + SmallVector<EnqueueJob, 16> Queue;
> + Queue.push_back(S);
> +
> + while (!Queue.empty()) {
> + EnqueueJob &job = Queue.back();
> + Stmt *CurrS = job.S;
> + if (!CurrS) {
> + Queue.pop_back();
> + continue;
> + }
> +
> + if (getDerived().shouldUseDataRecursionFor(CurrS)) {
> + if (job.StmtIt == Stmt::child_iterator()) {
> + if (!Walk(CurrS)) return false;
> + job.StmtIt = CurrS->child_begin();
> + } else {
> + ++job.StmtIt;
> + }
> +
> + if (job.StmtIt != CurrS->child_end())
> + Queue.push_back(*job.StmtIt);
> + else
> + Queue.pop_back();
> + continue;
> + }
> +
> + Queue.pop_back();
> + TRY_TO(TraverseStmt(CurrS));
> + }
> +
> + return true;
> +}
> +
> +template<typename Derived>
> +bool RecursiveASTVisitor<Derived>::Walk(Stmt *S) {
> +
> +#define DISPATCH_WALK(NAME, CLASS, VAR) \
> + return getDerived().WalkUpFrom##NAME(static_cast<CLASS*>(VAR));
> +
> + if (BinaryOperator *BinOp = dyn_cast<BinaryOperator>(S)) {
> + switch (BinOp->getOpcode()) {
> +#define OPERATOR(NAME) \
> + case BO_##NAME: DISPATCH_WALK(Bin##NAME, BinaryOperator, S);
> +
> + BINOP_LIST()
> +#undef OPERATOR
> +
> +#define OPERATOR(NAME) \
> + case BO_##NAME##Assign: \
> + DISPATCH_WALK(Bin##NAME##Assign, CompoundAssignOperator, S);
> +
> + CAO_LIST()
> +#undef OPERATOR
> + }
> + } else if (UnaryOperator *UnOp = dyn_cast<UnaryOperator>(S)) {
> + switch (UnOp->getOpcode()) {
> +#define OPERATOR(NAME) \
> + case UO_##NAME: DISPATCH_WALK(Unary##NAME, UnaryOperator, S);
> +
> + UNARYOP_LIST()
> +#undef OPERATOR
> + }
> + }
> +
> + // Top switch stmt: dispatch to TraverseFooStmt for each concrete FooStmt.
> + switch (S->getStmtClass()) {
> + case Stmt::NoStmtClass: break;
> +#define ABSTRACT_STMT(STMT)
> +#define STMT(CLASS, PARENT) \
> + case Stmt::CLASS##Class: DISPATCH_WALK(CLASS, CLASS, S);
> +#include "clang/AST/StmtNodes.inc"
> + }
> +
> +#undef DISPATCH_WALK
> +
> + return true;
> +}
> +
> #define DISPATCH(NAME, CLASS, VAR) \
> return getDerived().Traverse##NAME(static_cast<CLASS*>(VAR))
>
> @@ -407,6 +507,9 @@
> if (!S)
> return true;
>
> + if (getDerived().shouldUseDataRecursionFor(S))
> + return dataTraverse(S);
> +
> // If we have a binary expr, dispatch to the subcode of the binop. A smart
> // optimizer (e.g. LLVM) will fold this comparison into the switch stmt
> // below.
>
> Added: cfe/trunk/test/Index/index-many-logical-ops.c
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/index-many-logical-ops.c?rev=152820&view=auto
> ==============================================================================
> --- cfe/trunk/test/Index/index-many-logical-ops.c (added)
> +++ cfe/trunk/test/Index/index-many-logical-ops.c Thu Mar 15 13:07:19 2012
> @@ -0,0 +1,2011 @@
> +// RUN: c-index-test -index-file %s | FileCheck %s
> +
> +// rdar://10941790
> +// Check that we don't get stack overflow trying to index a huge number of
> +// logical operators.
> +
> +// CHECK: [indexDeclaration]: kind: function | name: foo
> +int foo(int x) {
> + return
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x &&
> + x;
> +}
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
More information about the cfe-commits
mailing list