]> granicus.if.org Git - clang/commitdiff
Reverting llvm::distance changes to use std::distance with iterators instead, per...
authorAaron Ballman <aaron@aaronballman.com>
Mon, 10 Mar 2014 13:43:55 +0000 (13:43 +0000)
committerAaron Ballman <aaron@aaronballman.com>
Mon, 10 Mar 2014 13:43:55 +0000 (13:43 +0000)
Replacing llvm::copy changes with SmallVector range-based construction which is a considerably cleaner approach.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@203461 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AST/ExprConstant.cpp
lib/CodeGen/CGObjCMac.cpp
lib/Sema/SemaInit.cpp
lib/Sema/SemaLambda.cpp
lib/Sema/SemaStmt.cpp

index 1822eaf2f2c57e6f4e1273a24d8ea933e4839bfa..98c946af0bdbb4b3200e3b43579444f865f40182 100644 (file)
@@ -3673,7 +3673,7 @@ static bool HandleConstructorCall(SourceLocation CallLoc, const LValue &This,
   // Reserve space for the struct members.
   if (!RD->isUnion() && Result.isUninit())
     Result = APValue(APValue::UninitStruct(), RD->getNumBases(),
-                     llvm::distance(RD->fields()));
+                     std::distance(RD->field_begin(), RD->field_end()));
 
   if (RD->isInvalidDecl()) return false;
   const ASTRecordLayout &Layout = Info.Ctx.getASTRecordLayout(RD);
@@ -3733,7 +3733,7 @@ static bool HandleConstructorCall(SourceLocation CallLoc, const LValue &This,
             *Value = APValue(FD);
           else
             *Value = APValue(APValue::UninitStruct(), CD->getNumBases(),
-                             llvm::distance(CD->fields()));
+                             std::distance(CD->field_begin(), CD->field_end()));
         }
         if (!HandleLValueMember(Info, (*I)->getInit(), Subobject, FD))
           return false;
@@ -4930,7 +4930,7 @@ static bool HandleClassZeroInitialization(EvalInfo &Info, const Expr *E,
   assert(!RD->isUnion() && "Expected non-union class type");
   const CXXRecordDecl *CD = dyn_cast<CXXRecordDecl>(RD);
   Result = APValue(APValue::UninitStruct(), CD ? CD->getNumBases() : 0,
-                   llvm::distance(RD->fields()));
+                   std::distance(RD->field_begin(), RD->field_end()));
 
   if (RD->isInvalidDecl()) return false;
   const ASTRecordLayout &Layout = Info.Ctx.getASTRecordLayout(RD);
@@ -5059,7 +5059,8 @@ bool RecordExprEvaluator::VisitInitListExpr(const InitListExpr *E) {
 
   assert((!isa<CXXRecordDecl>(RD) || !cast<CXXRecordDecl>(RD)->getNumBases()) &&
          "initializer list for class with base classes");
-  Result = APValue(APValue::UninitStruct(), 0, llvm::distance(RD->fields()));
+  Result = APValue(APValue::UninitStruct(), 0,
+                   std::distance(RD->field_begin(), RD->field_end()));
   unsigned ElementNo = 0;
   bool Success = true;
   for (const auto *Field : RD->fields()) {
index 13f87e723b954273f1badb5ab013e8433ee59b35..8bc14f6483ab5c24a93a35428482981f8a7645f5 100644 (file)
@@ -2200,8 +2200,7 @@ void CGObjCCommonMac::BuildRCBlockVarRecordLayout(const RecordType *RT,
                                                   bool &HasUnion,
                                                   bool ByrefLayout) {
   const RecordDecl *RD = RT->getDecl();
-  SmallVector<const FieldDecl*, 16> Fields;
-  llvm::copy(RD->fields(), std::back_inserter(Fields));
+  SmallVector<const FieldDecl*, 16> Fields(RD->fields());
   llvm::Type *Ty = CGM.getTypes().ConvertType(QualType(RT, 0));
   const llvm::StructLayout *RecLayout =
     CGM.getDataLayout().getStructLayout(cast<llvm::StructType>(Ty));
@@ -4513,8 +4512,7 @@ void CGObjCCommonMac::BuildAggrIvarRecordLayout(const RecordType *RT,
                                                 bool &HasUnion) {
   const RecordDecl *RD = RT->getDecl();
   // FIXME - Use iterator.
-  SmallVector<const FieldDecl*, 16> Fields;
-  llvm::copy(RD->fields(), std::back_inserter(Fields));
+  SmallVector<const FieldDecl*, 16> Fields(RD->fields());
   llvm::Type *Ty = CGM.getTypes().ConvertType(QualType(RT, 0));
   const llvm::StructLayout *RecLayout =
     CGM.getDataLayout().getStructLayout(cast<llvm::StructType>(Ty));
index 711c0c49972ad0a0ffc95caef8534c8732fba7f6..d3b68531096f6c79409133e745d2c5d1220d2a0e 100644 (file)
@@ -2286,7 +2286,7 @@ InitListChecker::getStructuredSubobjectInit(InitListExpr *IList, unsigned Index,
     if (RDecl->isUnion())
       NumElements = 1;
     else
-      NumElements = llvm::distance(RDecl->fields());
+      NumElements = std::distance(RDecl->field_begin(), RDecl->field_end());
   }
 
   Result->reserveInits(SemaRef.Context, NumElements);
index 4ef23ad72d42b41bcdacaea40dd0fa30c62be483..158324cb82e0a71a64e62ae7dfa19b9674d17d07 100644 (file)
@@ -1146,8 +1146,7 @@ void Sema::ActOnLambdaError(SourceLocation StartLoc, Scope *CurScope,
   LambdaScopeInfo *LSI = getCurLambda();
   CXXRecordDecl *Class = LSI->Lambda;
   Class->setInvalidDecl();
-  SmallVector<Decl*, 4> Fields;
-  llvm::copy(Class->fields(), std::back_inserter(Fields));
+  SmallVector<Decl*, 4> Fields(Class->fields());
   ActOnFields(0, Class->getLocation(), Class, Fields, SourceLocation(),
               SourceLocation(), 0);
   CheckCompletedCXXClass(Class);
@@ -1507,8 +1506,7 @@ ExprResult Sema::ActOnLambdaExpr(SourceLocation StartLoc, Stmt *Body,
       addBlockPointerConversion(*this, IntroducerRange, Class, CallOperator);
     
     // Finalize the lambda class.
-    SmallVector<Decl*, 4> Fields;
-    llvm::copy(Class->fields(), std::back_inserter(Fields));
+    SmallVector<Decl*, 4> Fields(Class->fields());
     ActOnFields(0, Class->getLocation(), Class, Fields, SourceLocation(),
                 SourceLocation(), 0);
     CheckCompletedCXXClass(Class);
index 1fce1f17572d623d995665e48ea22624c90a7101..d726f5f16ca8aa2f2939abe70960465bcbb38cba 100644 (file)
@@ -3349,8 +3349,7 @@ void Sema::ActOnCapturedRegionError() {
   RecordDecl *Record = RSI->TheRecordDecl;
   Record->setInvalidDecl();
 
-  SmallVector<Decl*, 4> Fields;
-  llvm::copy(Record->fields(), std::back_inserter(Fields));
+  SmallVector<Decl*, 4> Fields(Record->fields());
   ActOnFields(/*Scope=*/0, Record->getLocation(), Record, Fields,
               SourceLocation(), SourceLocation(), /*AttributeList=*/0);