Hello Justin, Some of your resent commits broke the next builder: http://lab.llvm.org:8011/builders/llvm-clang-lld-x86_64-scei-ps4-windows10pro-fast/builds/12710
Please have a look at it? Thanks Galina On Mon, Oct 10, 2016 at 9:26 AM, Justin Lebar via cfe-commits < cfe-commits@lists.llvm.org> wrote: > Author: jlebar > Date: Mon Oct 10 11:26:08 2016 > New Revision: 283766 > > URL: http://llvm.org/viewvc/llvm-project?rev=283766&view=rev > Log: > [Sema] Use unique_ptr instead of raw pointers in the late-parsed templates > map. > > Summary: > This is possible now that MapVector supports move-only values. > > Depends on D25404. > > Reviewers: timshen > > Subscribers: cfe-commits > > Differential Revision: https://reviews.llvm.org/D25405 > > Modified: > cfe/trunk/include/clang/Sema/ExternalSemaSource.h > cfe/trunk/include/clang/Sema/MultiplexExternalSemaSource.h > cfe/trunk/include/clang/Sema/Sema.h > cfe/trunk/include/clang/Serialization/ASTReader.h > cfe/trunk/lib/Sema/MultiplexExternalSemaSource.cpp > cfe/trunk/lib/Sema/Sema.cpp > cfe/trunk/lib/Sema/SemaTemplate.cpp > cfe/trunk/lib/Sema/SemaTemplateInstantiateDecl.cpp > cfe/trunk/lib/Serialization/ASTReader.cpp > cfe/trunk/lib/Serialization/ASTWriter.cpp > > Modified: cfe/trunk/include/clang/Sema/ExternalSemaSource.h > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/ > clang/Sema/ExternalSemaSource.h?rev=283766&r1=283765&r2=283766&view=diff > ============================================================ > ================== > --- cfe/trunk/include/clang/Sema/ExternalSemaSource.h (original) > +++ cfe/trunk/include/clang/Sema/ExternalSemaSource.h Mon Oct 10 11:26:08 > 2016 > @@ -190,7 +190,8 @@ public: > /// external source should take care not to introduce the same map > entries > /// repeatedly. > virtual void ReadLateParsedTemplates( > - llvm::MapVector<const FunctionDecl *, LateParsedTemplate *> > &LPTMap) {} > + llvm::MapVector<const FunctionDecl *, std::unique_ptr< > LateParsedTemplate>> > + &LPTMap) {} > > /// \copydoc Sema::CorrectTypo > /// \note LookupKind must correspond to a valid Sema::LookupNameKind > > Modified: cfe/trunk/include/clang/Sema/MultiplexExternalSemaSource.h > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Sema/ > MultiplexExternalSemaSource.h?rev=283766&r1=283765&r2=283766&view=diff > ============================================================ > ================== > --- cfe/trunk/include/clang/Sema/MultiplexExternalSemaSource.h (original) > +++ cfe/trunk/include/clang/Sema/MultiplexExternalSemaSource.h Mon Oct 10 > 11:26:08 2016 > @@ -322,8 +322,8 @@ public: > /// external source should take care not to introduce the same map > entries > /// repeatedly. > void ReadLateParsedTemplates( > - llvm::MapVector<const FunctionDecl *, LateParsedTemplate *> &LPTMap) > - override; > + llvm::MapVector<const FunctionDecl *, std::unique_ptr< > LateParsedTemplate>> > + &LPTMap) override; > > /// \copydoc ExternalSemaSource::CorrectTypo > /// \note Returns the first nonempty correction. > > Modified: cfe/trunk/include/clang/Sema/Sema.h > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/ > clang/Sema/Sema.h?rev=283766&r1=283765&r2=283766&view=diff > ============================================================ > ================== > --- cfe/trunk/include/clang/Sema/Sema.h (original) > +++ cfe/trunk/include/clang/Sema/Sema.h Mon Oct 10 11:26:08 2016 > @@ -551,7 +551,8 @@ public: > SmallVector<std::pair<CXXMethodDecl*, const FunctionProtoType*>, 2> > DelayedDefaultedMemberExceptionSpecs; > > - typedef llvm::MapVector<const FunctionDecl *, LateParsedTemplate *> > + typedef llvm::MapVector<const FunctionDecl *, > + std::unique_ptr<LateParsedTemplate>> > LateParsedTemplateMapT; > LateParsedTemplateMapT LateParsedTemplateMap; > > > Modified: cfe/trunk/include/clang/Serialization/ASTReader.h > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/ > clang/Serialization/ASTReader.h?rev=283766&r1=283765&r2=283766&view=diff > ============================================================ > ================== > --- cfe/trunk/include/clang/Serialization/ASTReader.h (original) > +++ cfe/trunk/include/clang/Serialization/ASTReader.h Mon Oct 10 11:26:08 > 2016 > @@ -1877,8 +1877,8 @@ public: > SourceLocation> > &Pending) > override; > > void ReadLateParsedTemplates( > - llvm::MapVector<const FunctionDecl *, LateParsedTemplate *> &LPTMap) > - override; > + llvm::MapVector<const FunctionDecl *, std::unique_ptr< > LateParsedTemplate>> > + &LPTMap) override; > > /// \brief Load a selector from disk, registering its ID if it exists. > void LoadSelector(Selector Sel); > > Modified: cfe/trunk/lib/Sema/MultiplexExternalSemaSource.cpp > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/ > MultiplexExternalSemaSource.cpp?rev=283766&r1=283765&r2=283766&view=diff > ============================================================ > ================== > --- cfe/trunk/lib/Sema/MultiplexExternalSemaSource.cpp (original) > +++ cfe/trunk/lib/Sema/MultiplexExternalSemaSource.cpp Mon Oct 10 > 11:26:08 2016 > @@ -285,7 +285,8 @@ void MultiplexExternalSemaSource::ReadPe > } > > void MultiplexExternalSemaSource::ReadLateParsedTemplates( > - llvm::MapVector<const FunctionDecl *, LateParsedTemplate *> &LPTMap) { > + llvm::MapVector<const FunctionDecl *, std::unique_ptr< > LateParsedTemplate>> > + &LPTMap) { > for (size_t i = 0; i < Sources.size(); ++i) > Sources[i]->ReadLateParsedTemplates(LPTMap); > } > > Modified: cfe/trunk/lib/Sema/Sema.cpp > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/ > Sema.cpp?rev=283766&r1=283765&r2=283766&view=diff > ============================================================ > ================== > --- cfe/trunk/lib/Sema/Sema.cpp (original) > +++ cfe/trunk/lib/Sema/Sema.cpp Mon Oct 10 11:26:08 2016 > @@ -259,7 +259,6 @@ void Sema::Initialize() { > } > > Sema::~Sema() { > - llvm::DeleteContainerSeconds(LateParsedTemplateMap); > if (VisContext) FreeVisContext(); > // Kill all the active scopes. > for (unsigned I = 1, E = FunctionScopes.size(); I != E; ++I) > > Modified: cfe/trunk/lib/Sema/SemaTemplate.cpp > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/ > SemaTemplate.cpp?rev=283766&r1=283765&r2=283766&view=diff > ============================================================ > ================== > --- cfe/trunk/lib/Sema/SemaTemplate.cpp (original) > +++ cfe/trunk/lib/Sema/SemaTemplate.cpp Mon Oct 10 11:26:08 2016 > @@ -8668,12 +8668,12 @@ void Sema::MarkAsLateParsedTemplate(Func > if (!FD) > return; > > - LateParsedTemplate *LPT = new LateParsedTemplate; > + auto LPT = llvm::make_unique<LateParsedTemplate>(); > > // Take tokens to avoid allocations > LPT->Toks.swap(Toks); > LPT->D = FnD; > - LateParsedTemplateMap.insert(std::make_pair(FD, LPT)); > + LateParsedTemplateMap.insert(std::make_pair(FD, std::move(LPT))); > > FD->setLateTemplateParsed(true); > } > > Modified: cfe/trunk/lib/Sema/SemaTemplateInstantiateDecl.cpp > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/ > SemaTemplateInstantiateDecl.cpp?rev=283766&r1=283765&r2=283766&view=diff > ============================================================ > ================== > --- cfe/trunk/lib/Sema/SemaTemplateInstantiateDecl.cpp (original) > +++ cfe/trunk/lib/Sema/SemaTemplateInstantiateDecl.cpp Mon Oct 10 > 11:26:08 2016 > @@ -3622,9 +3622,10 @@ void Sema::InstantiateFunctionDefinition > if (PatternDecl->isFromASTFile()) > ExternalSource->ReadLateParsedTemplates(LateParsedTemplateMap); > > - LateParsedTemplate *LPT = LateParsedTemplateMap.lookup(PatternDecl); > - assert(LPT && "missing LateParsedTemplate"); > - LateTemplateParser(OpaqueParser, *LPT); > + auto LPTIter = LateParsedTemplateMap.find(PatternDecl); > + assert(LPTIter != LateParsedTemplateMap.end() && > + "missing LateParsedTemplate"); > + LateTemplateParser(OpaqueParser, *LPTIter->second); > Pattern = PatternDecl->getBody(PatternDecl); > } > > > Modified: cfe/trunk/lib/Serialization/ASTReader.cpp > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/ > Serialization/ASTReader.cpp?rev=283766&r1=283765&r2=283766&view=diff > ============================================================ > ================== > --- cfe/trunk/lib/Serialization/ASTReader.cpp (original) > +++ cfe/trunk/lib/Serialization/ASTReader.cpp Mon Oct 10 11:26:08 2016 > @@ -7556,12 +7556,13 @@ void ASTReader::ReadPendingInstantiation > } > > void ASTReader::ReadLateParsedTemplates( > - llvm::MapVector<const FunctionDecl *, LateParsedTemplate *> &LPTMap) { > + llvm::MapVector<const FunctionDecl *, std::unique_ptr< > LateParsedTemplate>> > + &LPTMap) { > for (unsigned Idx = 0, N = LateParsedTemplates.size(); Idx < N; > /* In loop */) { > FunctionDecl *FD = cast<FunctionDecl>(GetDecl( > LateParsedTemplates[Idx++])); > > - LateParsedTemplate *LT = new LateParsedTemplate; > + auto LT = llvm::make_unique<LateParsedTemplate>(); > LT->D = GetDecl(LateParsedTemplates[Idx++]); > > ModuleFile *F = getOwningModuleFile(LT->D); > @@ -7572,7 +7573,7 @@ void ASTReader::ReadLateParsedTemplates( > for (unsigned T = 0; T < TokN; ++T) > LT->Toks.push_back(ReadToken(*F, LateParsedTemplates, Idx)); > > - LPTMap.insert(std::make_pair(FD, LT)); > + LPTMap.insert(std::make_pair(FD, std::move(LT))); > } > > LateParsedTemplates.clear(); > > Modified: cfe/trunk/lib/Serialization/ASTWriter.cpp > URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/ > Serialization/ASTWriter.cpp?rev=283766&r1=283765&r2=283766&view=diff > ============================================================ > ================== > --- cfe/trunk/lib/Serialization/ASTWriter.cpp (original) > +++ cfe/trunk/lib/Serialization/ASTWriter.cpp Mon Oct 10 11:26:08 2016 > @@ -4009,14 +4009,14 @@ void ASTWriter::WriteLateParsedTemplates > return; > > RecordData Record; > - for (auto LPTMapEntry : LPTMap) { > + for (auto &LPTMapEntry : LPTMap) { > const FunctionDecl *FD = LPTMapEntry.first; > - LateParsedTemplate *LPT = LPTMapEntry.second; > + LateParsedTemplate &LPT = *LPTMapEntry.second; > AddDeclRef(FD, Record); > - AddDeclRef(LPT->D, Record); > - Record.push_back(LPT->Toks.size()); > + AddDeclRef(LPT.D, Record); > + Record.push_back(LPT.Toks.size()); > > - for (const auto &Tok : LPT->Toks) { > + for (const auto &Tok : LPT.Toks) { > AddToken(Tok, Record); > } > } > > > _______________________________________________ > cfe-commits mailing list > cfe-commits@lists.llvm.org > http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits >
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits