diff options
| author | Dimitry Andric <dim@FreeBSD.org> | 2013-12-22 00:07:40 +0000 | 
|---|---|---|
| committer | Dimitry Andric <dim@FreeBSD.org> | 2013-12-22 00:07:40 +0000 | 
| commit | bfef399519ca9b8a4b4c6b563253bad7e0eeffe0 (patch) | |
| tree | df8df0b0067b381eab470a3b8f28d14a552a6340 /lib/AST/StmtIterator.cpp | |
| parent | 6a0372513edbc473b538d2f724efac50405d6fef (diff) | |
Diffstat (limited to 'lib/AST/StmtIterator.cpp')
| -rw-r--r-- | lib/AST/StmtIterator.cpp | 63 | 
1 files changed, 11 insertions, 52 deletions
diff --git a/lib/AST/StmtIterator.cpp b/lib/AST/StmtIterator.cpp index 9bf4aeaae83e..6e85375ed22f 100644 --- a/lib/AST/StmtIterator.cpp +++ b/lib/AST/StmtIterator.cpp @@ -40,14 +40,7 @@ void StmtIteratorBase::NextVA() {    if (p)      return; -  if (inDecl()) { -    if (VarDecl* VD = dyn_cast<VarDecl>(decl)) -      if (VD->Init) -        return; - -    NextDecl(); -  } -  else if (inDeclGroup()) { +  if (inDeclGroup()) {      if (VarDecl* VD = dyn_cast<VarDecl>(*DGI))        if (VD->Init)          return; @@ -55,40 +48,26 @@ void StmtIteratorBase::NextVA() {      NextDecl();    }    else { -    assert (inSizeOfTypeVA()); -    assert(!decl); +    assert(inSizeOfTypeVA());      RawVAPtr = 0;    }  }  void StmtIteratorBase::NextDecl(bool ImmediateAdvance) {    assert (getVAPtr() == NULL); +  assert(inDeclGroup()); -  if (inDecl()) { -    assert(decl); +  if (ImmediateAdvance) +    ++DGI; -    // FIXME: SIMPLIFY AWAY. -    if (ImmediateAdvance) -      decl = 0; -    else if (HandleDecl(decl)) +  for ( ; DGI != DGE; ++DGI) +    if (HandleDecl(*DGI))        return; -  } -  else { -    assert(inDeclGroup()); - -    if (ImmediateAdvance) -      ++DGI; - -    for ( ; DGI != DGE; ++DGI) -      if (HandleDecl(*DGI)) -        return; -  }    RawVAPtr = 0;  }  bool StmtIteratorBase::HandleDecl(Decl* D) { -    if (VarDecl* VD = dyn_cast<VarDecl>(D)) {      if (const VariableArrayType* VAPtr = FindVA(VD->getType().getTypePtr())) {        setVAPtr(VAPtr); @@ -113,43 +92,23 @@ bool StmtIteratorBase::HandleDecl(Decl* D) {    return false;  } -StmtIteratorBase::StmtIteratorBase(Decl *d, Stmt **s) -  : stmt(s), decl(d), RawVAPtr(d ? DeclMode : 0) { -  if (decl) -    NextDecl(false); -} -  StmtIteratorBase::StmtIteratorBase(Decl** dgi, Decl** dge)    : stmt(0), DGI(dgi), RawVAPtr(DeclGroupMode), DGE(dge) {    NextDecl(false);  }  StmtIteratorBase::StmtIteratorBase(const VariableArrayType* t) -  : stmt(0), decl(0), RawVAPtr(SizeOfTypeVAMode) { +  : stmt(0), DGI(0), RawVAPtr(SizeOfTypeVAMode) {    RawVAPtr |= reinterpret_cast<uintptr_t>(t);  }  Stmt*& StmtIteratorBase::GetDeclExpr() const { -    if (const VariableArrayType* VAPtr = getVAPtr()) {      assert (VAPtr->SizeExpr);      return const_cast<Stmt*&>(VAPtr->SizeExpr);    } -  assert (inDecl() || inDeclGroup()); - -  if (inDeclGroup()) { -    VarDecl* VD = cast<VarDecl>(*DGI); -    return *VD->getInitAddress(); -  } - -  assert (inDecl()); - -  if (VarDecl* VD = dyn_cast<VarDecl>(decl)) { -    assert (VD->Init); -    return *VD->getInitAddress(); -  } - -  EnumConstantDecl* ECD = cast<EnumConstantDecl>(decl); -  return ECD->Init; +  assert (inDeclGroup()); +  VarDecl* VD = cast<VarDecl>(*DGI); +  return *VD->getInitAddress();  }  | 
