[llvm] r223918 - Use unique_ptr instead of DeleteContainerSeconds.
Craig Topper
craig.topper at gmail.com
Tue Dec 9 22:18:57 PST 2014
Author: ctopper
Date: Wed Dec 10 00:18:57 2014
New Revision: 223918
URL: http://llvm.org/viewvc/llvm-project?rev=223918&view=rev
Log:
Use unique_ptr instead of DeleteContainerSeconds.
Modified:
llvm/trunk/utils/TableGen/CodeGenTarget.cpp
llvm/trunk/utils/TableGen/CodeGenTarget.h
Modified: llvm/trunk/utils/TableGen/CodeGenTarget.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/CodeGenTarget.cpp?rev=223918&r1=223917&r2=223918&view=diff
==============================================================================
--- llvm/trunk/utils/TableGen/CodeGenTarget.cpp (original)
+++ llvm/trunk/utils/TableGen/CodeGenTarget.cpp Wed Dec 10 00:18:57 2014
@@ -143,7 +143,6 @@ CodeGenTarget::CodeGenTarget(RecordKeepe
}
CodeGenTarget::~CodeGenTarget() {
- DeleteContainerSeconds(Instructions);
}
const std::string &CodeGenTarget::getName() const {
@@ -270,20 +269,20 @@ void CodeGenTarget::ReadInstructions() c
// Parse the instructions defined in the .td file.
for (unsigned i = 0, e = Insts.size(); i != e; ++i)
- Instructions[Insts[i]] = new CodeGenInstruction(Insts[i]);
+ Instructions[Insts[i]] = llvm::make_unique<CodeGenInstruction>(Insts[i]);
}
static const CodeGenInstruction *
GetInstByName(const char *Name,
- const DenseMap<const Record*, CodeGenInstruction*> &Insts,
+ const DenseMap<const Record*,
+ std::unique_ptr<CodeGenInstruction>> &Insts,
RecordKeeper &Records) {
const Record *Rec = Records.getDef(Name);
- DenseMap<const Record*, CodeGenInstruction*>::const_iterator
- I = Insts.find(Rec);
+ const auto I = Insts.find(Rec);
if (!Rec || I == Insts.end())
PrintFatalError(Twine("Could not find '") + Name + "' instruction!");
- return I->second;
+ return I->second.get();
}
/// \brief Return all of the instructions defined by the target, ordered by
@@ -298,7 +297,7 @@ void CodeGenTarget::ComputeInstrsByEnum(
"LIFETIME_END", "STACKMAP", "PATCHPOINT", "LOAD_STACK_GUARD",
"STATEPOINT",
nullptr};
- const DenseMap<const Record*, CodeGenInstruction*> &Insts = getInstructions();
+ const auto &Insts = getInstructions();
for (const char *const *p = FixedInstrs; *p; ++p) {
const CodeGenInstruction *Instr = GetInstByName(*p, Insts, Records);
assert(Instr && "Missing target independent instruction");
@@ -308,7 +307,7 @@ void CodeGenTarget::ComputeInstrsByEnum(
unsigned EndOfPredefines = InstrsByEnum.size();
for (const auto &I : Insts) {
- const CodeGenInstruction *CGI = I.second;
+ const CodeGenInstruction *CGI = I.second.get();
if (CGI->Namespace != "TargetOpcode")
InstrsByEnum.push_back(CGI);
}
Modified: llvm/trunk/utils/TableGen/CodeGenTarget.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/CodeGenTarget.h?rev=223918&r1=223917&r2=223918&view=diff
==============================================================================
--- llvm/trunk/utils/TableGen/CodeGenTarget.h (original)
+++ llvm/trunk/utils/TableGen/CodeGenTarget.h Wed Dec 10 00:18:57 2014
@@ -65,7 +65,8 @@ class CodeGenTarget {
RecordKeeper &Records;
Record *TargetRec;
- mutable DenseMap<const Record*, CodeGenInstruction*> Instructions;
+ mutable DenseMap<const Record*,
+ std::unique_ptr<CodeGenInstruction>> Instructions;
mutable std::unique_ptr<CodeGenRegBank> RegBank;
mutable std::vector<Record*> RegAltNameIndices;
mutable SmallVector<MVT::SimpleValueType, 8> LegalValueTypes;
@@ -146,7 +147,8 @@ public:
CodeGenSchedModels &getSchedModels() const;
private:
- DenseMap<const Record*, CodeGenInstruction*> &getInstructions() const {
+ DenseMap<const Record*, std::unique_ptr<CodeGenInstruction>> &
+ getInstructions() const {
if (Instructions.empty()) ReadInstructions();
return Instructions;
}
@@ -154,8 +156,7 @@ public:
CodeGenInstruction &getInstruction(const Record *InstRec) const {
if (Instructions.empty()) ReadInstructions();
- DenseMap<const Record*, CodeGenInstruction*>::iterator I =
- Instructions.find(InstRec);
+ auto I = Instructions.find(InstRec);
assert(I != Instructions.end() && "Not an instruction");
return *I->second;
}
More information about the llvm-commits
mailing list