]> granicus.if.org Git - clang/commitdiff
Fix lots of PCH crashes caused by the new assertions in
authorDouglas Gregor <dgregor@apple.com>
Fri, 22 May 2009 22:45:36 +0000 (22:45 +0000)
committerDouglas Gregor <dgregor@apple.com>
Fri, 22 May 2009 22:45:36 +0000 (22:45 +0000)
llvm::SmallVector, using data() instead of &[0]. The PCH testsuite now
runs cleanly (again).

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

lib/Frontend/PCHReader.cpp
lib/Frontend/PCHReaderDecl.cpp
lib/Frontend/PCHReaderStmt.cpp

index 4da4538f3e522ed800f6b80d3a07a63cdb78be9f..46f4fb72542962f6d3411fd686e4bfc5e11c733c 100644 (file)
@@ -117,7 +117,7 @@ public:
     for (unsigned I = 1; I != N; ++I)
       Args.push_back(Reader.DecodeIdentifierInfo(ReadUnalignedLE32(d)));
 
-    return SelTable.getSelector(N, &Args[0]);
+    return SelTable.getSelector(N, Args.data());
   }
     
   data_type ReadData(Selector, const unsigned char* d, unsigned DataLen) {
@@ -946,7 +946,7 @@ void PCHReader::ReadMacroRecord(uint64_t Offset) {
         MI->setIsFunctionLike();
         if (isC99VarArgs) MI->setIsC99Varargs();
         if (isGNUVarArgs) MI->setIsGNUVarargs();
-        MI->setArgumentList(&MacroArgs[0], MacroArgs.size(),
+        MI->setArgumentList(MacroArgs.data(), MacroArgs.size(),
                             PP.getPreprocessorAllocator());
       }
 
@@ -1710,7 +1710,7 @@ QualType PCHReader::ReadTypeRecord(uint64_t Offset) {
     llvm::SmallVector<ObjCProtocolDecl*, 4> Protos;
     for (unsigned I = 0; I != NumProtos; ++I)
       Protos.push_back(cast<ObjCProtocolDecl>(GetDecl(Record[Idx++])));
-    return Context->getObjCQualifiedInterfaceType(ItfD, &Protos[0], NumProtos);
+    return Context->getObjCQualifiedInterfaceType(ItfD, Protos.data(), NumProtos);
   }
 
   case pch::TYPE_OBJC_QUALIFIED_ID: {
@@ -1719,7 +1719,7 @@ QualType PCHReader::ReadTypeRecord(uint64_t Offset) {
     llvm::SmallVector<ObjCProtocolDecl*, 4> Protos;
     for (unsigned I = 0; I != NumProtos; ++I)
       Protos.push_back(cast<ObjCProtocolDecl>(GetDecl(Record[Idx++])));
-    return Context->getObjCQualifiedIdType(&Protos[0], NumProtos);
+    return Context->getObjCQualifiedIdType(Protos.data(), NumProtos);
   }
   }
   // Suppress a GCC warning
index 53dd6df61bf2105e8b00d3f5747478951d9c9f77..7d4c63419326e71682b59f89a50ebf7d882e11aa 100644 (file)
@@ -247,7 +247,7 @@ void PCHDeclReader::VisitObjCClassDecl(ObjCClassDecl *CD) {
   ClassRefs.reserve(NumClassRefs);
   for (unsigned I = 0; I != NumClassRefs; ++I)
     ClassRefs.push_back(cast<ObjCInterfaceDecl>(Reader.GetDecl(Record[Idx++])));
-  CD->setClassList(*Reader.getContext(), &ClassRefs[0], NumClassRefs);
+  CD->setClassList(*Reader.getContext(), ClassRefs.data(), NumClassRefs);
 }
 
 void PCHDeclReader::VisitObjCForwardProtocolDecl(ObjCForwardProtocolDecl *FPD) {
@@ -257,7 +257,7 @@ void PCHDeclReader::VisitObjCForwardProtocolDecl(ObjCForwardProtocolDecl *FPD) {
   ProtoRefs.reserve(NumProtoRefs);
   for (unsigned I = 0; I != NumProtoRefs; ++I)
     ProtoRefs.push_back(cast<ObjCProtocolDecl>(Reader.GetDecl(Record[Idx++])));
-  FPD->setProtocolList(&ProtoRefs[0], NumProtoRefs, *Reader.getContext());
+  FPD->setProtocolList(ProtoRefs.data(), NumProtoRefs, *Reader.getContext());
 }
 
 void PCHDeclReader::VisitObjCCategoryDecl(ObjCCategoryDecl *CD) {
@@ -373,7 +373,7 @@ void PCHDeclReader::VisitBlockDecl(BlockDecl *BD) {
   Params.reserve(NumParams);
   for (unsigned I = 0; I != NumParams; ++I)
     Params.push_back(cast<ParmVarDecl>(Reader.GetDecl(Record[Idx++])));
-  BD->setParams(*Reader.getContext(), &Params[0], NumParams);  
+  BD->setParams(*Reader.getContext(), Params.data(), NumParams);  
 }
 
 std::pair<uint64_t, uint64_t> 
@@ -483,7 +483,7 @@ Attr *PCHReader::ReadAttributes() {
       llvm::SmallVector<unsigned, 16> ArgNums;
       ArgNums.insert(ArgNums.end(), &Record[Idx], &Record[Idx] + Size);
       Idx += Size;
-      New = ::new (*Context) NonNullAttr(&ArgNums[0], Size);
+      New = ::new (*Context) NonNullAttr(ArgNums.data(), Size);
       break;
     }
 
index 03c5d25a7bf2a83ff0e47cbb0117df70aeca628f..10059f609b10ff6d42c37e509088400ec17e221f 100644 (file)
@@ -274,7 +274,8 @@ unsigned PCHStmtReader::VisitDeclStmt(DeclStmt *S) {
     for (unsigned N = Record.size(); Idx != N; ++Idx)
       Decls.push_back(Reader.GetDecl(Record[Idx]));
     S->setDeclGroup(DeclGroupRef(DeclGroup::Create(*Reader.getContext(),
-                                                   &Decls[0], Decls.size())));
+                                                   Decls.data(),
+                                                   Decls.size())));
   }
   return 0;
 }
@@ -369,7 +370,7 @@ unsigned PCHStmtReader::VisitStringLiteral(StringLiteral *E) {
 
   // Read string data  
   llvm::SmallVector<char, 16> Str(&Record[Idx], &Record[Idx] + Len);
-  E->setStrData(*Reader.getContext(), &Str[0], Len);
+  E->setStrData(*Reader.getContext(), Str.data(), Len);
   Idx += Len;
 
   // Read source locations
@@ -585,7 +586,7 @@ unsigned PCHStmtReader::VisitDesignatedInitExpr(DesignatedInitExpr *E) {
     }
     }
   }
-  E->setDesignators(&Designators[0], Designators.size());
+  E->setDesignators(Designators.data(), Designators.size());
 
   return NumSubExprs;
 }