diff options
author | Douglas Gregor <dgregor@apple.com> | 2009-05-22 22:45:36 +0000 |
---|---|---|
committer | Douglas Gregor <dgregor@apple.com> | 2009-05-22 22:45:36 +0000 |
commit | 038c338949d808eab5ebf20bb3185f860b2ae858 (patch) | |
tree | fabd401925818bbde6f78b843517076adcf2b91e | |
parent | 92f3d1ff1c365cd02a6c1338ff4bdad9a60ad9f0 (diff) | |
download | bcm5719-llvm-038c338949d808eab5ebf20bb3185f860b2ae858.tar.gz bcm5719-llvm-038c338949d808eab5ebf20bb3185f860b2ae858.zip |
Fix lots of PCH crashes caused by the new assertions in
llvm::SmallVector, using data() instead of &[0]. The PCH testsuite now
runs cleanly (again).
llvm-svn: 72292
-rw-r--r-- | clang/lib/Frontend/PCHReader.cpp | 8 | ||||
-rw-r--r-- | clang/lib/Frontend/PCHReaderDecl.cpp | 8 | ||||
-rw-r--r-- | clang/lib/Frontend/PCHReaderStmt.cpp | 7 |
3 files changed, 12 insertions, 11 deletions
diff --git a/clang/lib/Frontend/PCHReader.cpp b/clang/lib/Frontend/PCHReader.cpp index 4da4538f3e5..46f4fb72542 100644 --- a/clang/lib/Frontend/PCHReader.cpp +++ b/clang/lib/Frontend/PCHReader.cpp @@ -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 diff --git a/clang/lib/Frontend/PCHReaderDecl.cpp b/clang/lib/Frontend/PCHReaderDecl.cpp index 53dd6df61bf..7d4c6341932 100644 --- a/clang/lib/Frontend/PCHReaderDecl.cpp +++ b/clang/lib/Frontend/PCHReaderDecl.cpp @@ -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; } diff --git a/clang/lib/Frontend/PCHReaderStmt.cpp b/clang/lib/Frontend/PCHReaderStmt.cpp index 03c5d25a7bf..10059f609b1 100644 --- a/clang/lib/Frontend/PCHReaderStmt.cpp +++ b/clang/lib/Frontend/PCHReaderStmt.cpp @@ -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; } |