diff options
| author | Eli Friedman <eli.friedman@gmail.com> | 2011-07-07 01:54:01 +0000 | 
|---|---|---|
| committer | Eli Friedman <eli.friedman@gmail.com> | 2011-07-07 01:54:01 +0000 | 
| commit | a3c122db7e4883129bb35558becd6fe8c4722295 (patch) | |
| tree | a9058e6058155c36cfa9fec70377fd1e8f638a1b /clang/lib/AST | |
| parent | b6adf46f625cc98aaa9906420a8904d0955dac0e (diff) | |
| download | bcm5719-llvm-a3c122db7e4883129bb35558becd6fe8c4722295.tar.gz bcm5719-llvm-a3c122db7e4883129bb35558becd6fe8c4722295.zip  | |
Zap a couple unnecessary loops.
llvm-svn: 134578
Diffstat (limited to 'clang/lib/AST')
| -rw-r--r-- | clang/lib/AST/ASTContext.cpp | 12 | ||||
| -rw-r--r-- | clang/lib/AST/ExprConstant.cpp | 10 | 
2 files changed, 2 insertions, 20 deletions
diff --git a/clang/lib/AST/ASTContext.cpp b/clang/lib/AST/ASTContext.cpp index 12981e26c24..e2fa4e504a2 100644 --- a/clang/lib/AST/ASTContext.cpp +++ b/clang/lib/AST/ASTContext.cpp @@ -4250,17 +4250,7 @@ static void EncodeBitField(const ASTContext *Ctx, std::string& S,    if (!Ctx->getLangOptions().NeXTRuntime) {      const RecordDecl *RD = FD->getParent();      const ASTRecordLayout &RL = Ctx->getASTRecordLayout(RD); -    // FIXME: This same linear search is also used in ExprConstant - it might -    // be better if the FieldDecl stored its offset.  We'd be increasing the -    // size of the object slightly, but saving some time every time it is used. -    unsigned i = 0; -    for (RecordDecl::field_iterator Field = RD->field_begin(), -                                 FieldEnd = RD->field_end(); -         Field != FieldEnd; (void)++Field, ++i) { -      if (*Field == FD) -        break; -    } -    S += llvm::utostr(RL.getFieldOffset(i)); +    S += llvm::utostr(RL.getFieldOffset(FD->getFieldIndex()));      if (T->isEnumeralType())        S += 'i';      else diff --git a/clang/lib/AST/ExprConstant.cpp b/clang/lib/AST/ExprConstant.cpp index df33f7afc3f..cc8c50198cb 100644 --- a/clang/lib/AST/ExprConstant.cpp +++ b/clang/lib/AST/ExprConstant.cpp @@ -536,15 +536,7 @@ bool LValueExprEvaluator::VisitMemberExpr(const MemberExpr *E) {    if (FD->getType()->isReferenceType())      return false; -  // FIXME: This is linear time. -  unsigned i = 0; -  for (RecordDecl::field_iterator Field = RD->field_begin(), -                               FieldEnd = RD->field_end(); -       Field != FieldEnd; (void)++Field, ++i) { -    if (*Field == FD) -      break; -  } - +  unsigned i = FD->getFieldIndex();    Result.Offset += Info.Ctx.toCharUnitsFromBits(RL.getFieldOffset(i));    return true;  }  | 

