diff options
author | Dylan Noblesmith <nobled@dreamwidth.org> | 2014-08-24 19:10:57 +0000 |
---|---|---|
committer | Dylan Noblesmith <nobled@dreamwidth.org> | 2014-08-24 19:10:57 +0000 |
commit | 085fc4d6c679055fc603650e7d29579b262e11a8 (patch) | |
tree | ec1e4b67bdf444fbc43f0718fa96c0313ecd8777 | |
parent | aa9b74c5447382b1f57d06604a4993b2b0e78486 (diff) | |
download | bcm5719-llvm-085fc4d6c679055fc603650e7d29579b262e11a8.tar.gz bcm5719-llvm-085fc4d6c679055fc603650e7d29579b262e11a8.zip |
TableGen: unique_ptr-ify RecordKeeper
llvm-svn: 216350
-rw-r--r-- | llvm/include/llvm/TableGen/Record.h | 36 | ||||
-rw-r--r-- | llvm/lib/TableGen/Record.cpp | 2 | ||||
-rw-r--r-- | llvm/utils/TableGen/CTagsEmitter.cpp | 4 | ||||
-rw-r--r-- | llvm/utils/TableGen/PseudoLoweringEmitter.cpp | 2 |
4 files changed, 20 insertions, 24 deletions
diff --git a/llvm/include/llvm/TableGen/Record.h b/llvm/include/llvm/TableGen/Record.h index 5f610a6930d..d4bc5572482 100644 --- a/llvm/include/llvm/TableGen/Record.h +++ b/llvm/include/llvm/TableGen/Record.h @@ -1650,36 +1650,32 @@ struct MultiClass { }; class RecordKeeper { - std::map<std::string, Record*> Classes, Defs; + typedef std::map<std::string, std::unique_ptr<Record>> RecordMap; + RecordMap Classes, Defs; public: - ~RecordKeeper() { - for (std::map<std::string, Record*>::iterator I = Classes.begin(), - E = Classes.end(); I != E; ++I) - delete I->second; - for (std::map<std::string, Record*>::iterator I = Defs.begin(), - E = Defs.end(); I != E; ++I) - delete I->second; - } - - const std::map<std::string, Record*> &getClasses() const { return Classes; } - const std::map<std::string, Record*> &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<std::string, Record*>::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<std::string, Record*>::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<Record> 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<Record> 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/llvm/lib/TableGen/Record.cpp b/llvm/lib/TableGen/Record.cpp index d4800c4e7a9..34e3ab4a2e3 100644 --- a/llvm/lib/TableGen/Record.cpp +++ b/llvm/lib/TableGen/Record.cpp @@ -2031,7 +2031,7 @@ RecordKeeper::getAllDerivedDefinitions(const std::string &ClassName) const { std::vector<Record*> 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/llvm/utils/TableGen/CTagsEmitter.cpp b/llvm/utils/TableGen/CTagsEmitter.cpp index 072dcb5dd61..bbed92a1385 100644 --- a/llvm/utils/TableGen/CTagsEmitter.cpp +++ b/llvm/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/llvm/utils/TableGen/PseudoLoweringEmitter.cpp b/llvm/utils/TableGen/PseudoLoweringEmitter.cpp index e8933b4fac4..ebb43f06526 100644 --- a/llvm/utils/TableGen/PseudoLoweringEmitter.cpp +++ b/llvm/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. |