summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDylan Noblesmith <nobled@dreamwidth.org>2014-08-24 19:10:57 +0000
committerDylan Noblesmith <nobled@dreamwidth.org>2014-08-24 19:10:57 +0000
commit085fc4d6c679055fc603650e7d29579b262e11a8 (patch)
treeec1e4b67bdf444fbc43f0718fa96c0313ecd8777
parentaa9b74c5447382b1f57d06604a4993b2b0e78486 (diff)
downloadbcm5719-llvm-085fc4d6c679055fc603650e7d29579b262e11a8.tar.gz
bcm5719-llvm-085fc4d6c679055fc603650e7d29579b262e11a8.zip
TableGen: unique_ptr-ify RecordKeeper
llvm-svn: 216350
-rw-r--r--llvm/include/llvm/TableGen/Record.h36
-rw-r--r--llvm/lib/TableGen/Record.cpp2
-rw-r--r--llvm/utils/TableGen/CTagsEmitter.cpp4
-rw-r--r--llvm/utils/TableGen/PseudoLoweringEmitter.cpp2
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.
OpenPOWER on IntegriCloud