the StmtIterator referring to the initializers of a chain of Decls was equal
to the "end" iterator. The particular bug manifested when an iterator was
created on a chain of decls with no initializers.
Thanks to Nuno Lopes for reporting this bug and providing a patch.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44220
91177308-0d34-0410-b5e6-
96231b3b80d8
/// we must linearize declarations to handle arbitrary control-flow induced by
/// those expressions.
CFGBlock* CFGBuilder::WalkAST_VisitDeclSubExprs(StmtIterator& I) {
+ if (I == StmtIterator())
+ return Block;
+
Stmt* S = *I;
++I;
-
- if (I != StmtIterator())
- WalkAST_VisitDeclSubExprs(I);
+ WalkAST_VisitDeclSubExprs(I);
Block = addStmt(S);
return Block;