diff options
Diffstat (limited to 'lib/AST/StmtIterator.cpp')
-rw-r--r-- | lib/AST/StmtIterator.cpp | 9 |
1 files changed, 4 insertions, 5 deletions
diff --git a/lib/AST/StmtIterator.cpp b/lib/AST/StmtIterator.cpp index 14083e30a9..61b8e0f9c5 100644 --- a/lib/AST/StmtIterator.cpp +++ b/lib/AST/StmtIterator.cpp @@ -36,16 +36,16 @@ void StmtIteratorBase::NextVA() { p = FindVA(p->getElementType().getTypePtr()); setVAPtr(p); - if (!p && decl) { + if (!p && inDecl()) { if (VarDecl* VD = dyn_cast<VarDecl>(decl)) if (VD->Init) return; NextDecl(); - } - else { + } else if (inSizeOfTypeVA()) { + assert(!decl); RawVAPtr = 0; - } + } } void StmtIteratorBase::NextDecl(bool ImmediateAdvance) { @@ -101,7 +101,6 @@ StmtIteratorBase::StmtIteratorBase(VariableArrayType* t) RawVAPtr |= reinterpret_cast<uintptr_t>(t); } - Stmt*& StmtIteratorBase::GetDeclExpr() const { if (VariableArrayType* VAPtr = getVAPtr()) { assert (VAPtr->SizeExpr); |