From 7bd541a4dc1b08805d14bb57dd42ad7dcd5a74d9 Mon Sep 17 00:00:00 2001 From: Dylan Noblesmith Date: Sun, 24 Aug 2014 19:10:57 +0000 Subject: [PATCH] TableGen: unique_ptr-ify RecordKeeper git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@216350 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/TableGen/Record.h | 36 +++++++++++------------- lib/TableGen/Record.cpp | 2 +- utils/TableGen/CTagsEmitter.cpp | 4 +-- utils/TableGen/PseudoLoweringEmitter.cpp | 2 +- 4 files changed, 20 insertions(+), 24 deletions(-) diff --git a/include/llvm/TableGen/Record.h b/include/llvm/TableGen/Record.h index 5f610a6930d..d4bc5572482 100644 --- a/include/llvm/TableGen/Record.h +++ b/include/llvm/TableGen/Record.h @@ -1650,36 +1650,32 @@ struct MultiClass { }; class RecordKeeper { - std::map Classes, Defs; + typedef std::map> RecordMap; + RecordMap Classes, Defs; public: - ~RecordKeeper() { - for (std::map::iterator I = Classes.begin(), - E = Classes.end(); I != E; ++I) - delete I->second; - for (std::map::iterator I = Defs.begin(), - E = Defs.end(); I != E; ++I) - delete I->second; - } - - const std::map &getClasses() const { return Classes; } - const std::map &getDefs() const { return Defs; } + const RecordMap &getClasses() const { return Classes; } + const RecordMap &getDefs() const { return Defs; } Record *getClass(const std::string &Name) const { - std::map::const_iterator I = Classes.find(Name); - return I == Classes.end() ? nullptr : I->second; + auto I = Classes.find(Name); + return I == Classes.end() ? nullptr : I->second.get(); } Record *getDef(const std::string &Name) const { - std::map::const_iterator I = Defs.find(Name); - return I == Defs.end() ? nullptr : I->second; + auto I = Defs.find(Name); + return I == Defs.end() ? nullptr : I->second.get(); } - void addClass(Record *R) { - bool Ins = Classes.insert(std::make_pair(R->getName(), R)).second; + void addClass(Record *_R) { + std::unique_ptr R(_R); + bool Ins = Classes.insert(std::make_pair(R->getName(), + std::move(R))).second; (void)Ins; assert(Ins && "Class already exists"); } - void addDef(Record *R) { - bool Ins = Defs.insert(std::make_pair(R->getName(), R)).second; + void addDef(Record *_R) { + std::unique_ptr R(_R); + bool Ins = Defs.insert(std::make_pair(R->getName(), + std::move(R))).second; (void)Ins; assert(Ins && "Record already exists"); } diff --git a/lib/TableGen/Record.cpp b/lib/TableGen/Record.cpp index d4800c4e7a9..34e3ab4a2e3 100644 --- a/lib/TableGen/Record.cpp +++ b/lib/TableGen/Record.cpp @@ -2031,7 +2031,7 @@ RecordKeeper::getAllDerivedDefinitions(const std::string &ClassName) const { std::vector Defs; for (const auto &D : getDefs()) if (D.second->isSubClassOf(Class)) - Defs.push_back(D.second); + Defs.push_back(D.second.get()); return Defs; } diff --git a/utils/TableGen/CTagsEmitter.cpp b/utils/TableGen/CTagsEmitter.cpp index 072dcb5dd61..bbed92a1385 100644 --- a/utils/TableGen/CTagsEmitter.cpp +++ b/utils/TableGen/CTagsEmitter.cpp @@ -75,9 +75,9 @@ void CTagsEmitter::run(raw_ostream &OS) { // Collect tags. Tags.reserve(Classes.size() + Defs.size()); for (const auto &C : Classes) - Tags.push_back(Tag(C.first, locate(C.second))); + Tags.push_back(Tag(C.first, locate(C.second.get()))); for (const auto &D : Defs) - Tags.push_back(Tag(D.first, locate(D.second))); + Tags.push_back(Tag(D.first, locate(D.second.get()))); // Emit tags. std::sort(Tags.begin(), Tags.end()); OS << "!_TAG_FILE_FORMAT\t1\t/original ctags format/\n"; diff --git a/utils/TableGen/PseudoLoweringEmitter.cpp b/utils/TableGen/PseudoLoweringEmitter.cpp index e8933b4fac4..ebb43f06526 100644 --- a/utils/TableGen/PseudoLoweringEmitter.cpp +++ b/utils/TableGen/PseudoLoweringEmitter.cpp @@ -280,7 +280,7 @@ void PseudoLoweringEmitter::run(raw_ostream &o) { for (const auto &D : Records.getDefs()) { if (D.second->isSubClassOf(ExpansionClass) && D.second->isSubClassOf(InstructionClass)) - Insts.push_back(D.second); + Insts.push_back(D.second.get()); } // Process the pseudo expansion definitions, validating them as we do so. -- 2.34.1