[PATCH] D47461: [TableGen] Fix leaking of PhysRegInputs.
Florian Hahn via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue May 29 10:44:15 PDT 2018
This revision was automatically updated to reflect the committed changes.
Closed by commit rL333438: [TableGen] Fix leaking of PhysRegInputs. (authored by fhahn, committed by ).
Changed prior to commit:
https://reviews.llvm.org/D47461?vs=148862&id=148947#toc
Repository:
rL LLVM
https://reviews.llvm.org/D47461
Files:
llvm/trunk/utils/TableGen/FastISelEmitter.cpp
Index: llvm/trunk/utils/TableGen/FastISelEmitter.cpp
===================================================================
--- llvm/trunk/utils/TableGen/FastISelEmitter.cpp
+++ llvm/trunk/utils/TableGen/FastISelEmitter.cpp
@@ -36,8 +36,12 @@
std::string Name;
const CodeGenRegisterClass *RC;
std::string SubRegNo;
- std::vector<std::string>* PhysRegs;
+ std::vector<std::string> PhysRegs;
std::string PredicateCheck;
+
+ // Make sure we do not copy InstructionMemo.
+ InstructionMemo(const InstructionMemo &Other) = delete;
+ InstructionMemo(InstructionMemo &&Other) = default;
};
} // End anonymous namespace
@@ -527,10 +531,10 @@
DstRC))
continue;
- std::vector<std::string>* PhysRegInputs = new std::vector<std::string>();
+ std::vector<std::string> PhysRegInputs;
if (InstPatNode->getOperator()->getName() == "imm" ||
InstPatNode->getOperator()->getName() == "fpimm")
- PhysRegInputs->push_back("");
+ PhysRegInputs.push_back("");
else {
// Compute the PhysRegs used by the given pattern, and check that
// the mapping from the src to dst patterns is simple.
@@ -548,7 +552,7 @@
++DstIndex;
}
- PhysRegInputs->push_back(PhysReg);
+ PhysRegInputs.push_back(PhysReg);
}
if (Op->getName() != "EXTRACT_SUBREG" && DstIndex < Dst->getNumChildren())
@@ -592,8 +596,8 @@
// Note: Instructions with the same complexity will appear in the order
// that they are encountered.
- SimplePatterns[Operands][OpcodeName][VT][RetVT].insert(
- std::make_pair(complexity, Memo));
+ SimplePatterns[Operands][OpcodeName][VT][RetVT].emplace(complexity,
+ std::move(Memo));
// If any of the operands were immediates with predicates on them, strip
// them down to a signature that doesn't have predicates so that we can
@@ -648,22 +652,22 @@
OS << " ";
}
- for (unsigned i = 0; i < Memo.PhysRegs->size(); ++i) {
- if ((*Memo.PhysRegs)[i] != "")
+ for (unsigned i = 0; i < Memo.PhysRegs.size(); ++i) {
+ if (Memo.PhysRegs[i] != "")
OS << " BuildMI(*FuncInfo.MBB, FuncInfo.InsertPt, DbgLoc, "
- << "TII.get(TargetOpcode::COPY), "
- << (*Memo.PhysRegs)[i] << ").addReg(Op" << i << ");\n";
+ << "TII.get(TargetOpcode::COPY), " << Memo.PhysRegs[i]
+ << ").addReg(Op" << i << ");\n";
}
OS << " return fastEmitInst_";
if (Memo.SubRegNo.empty()) {
- Operands.PrintManglingSuffix(OS, *Memo.PhysRegs,
- ImmediatePredicates, true);
+ Operands.PrintManglingSuffix(OS, Memo.PhysRegs, ImmediatePredicates,
+ true);
OS << "(" << InstNS << "::" << Memo.Name << ", ";
OS << "&" << InstNS << "::" << Memo.RC->getName() << "RegClass";
if (!Operands.empty())
OS << ", ";
- Operands.PrintArguments(OS, *Memo.PhysRegs);
+ Operands.PrintArguments(OS, Memo.PhysRegs);
OS << ");\n";
} else {
OS << "extractsubreg(" << RetVTName
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D47461.148947.patch
Type: text/x-patch
Size: 3150 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180529/30bfedf1/attachment.bin>
More information about the llvm-commits
mailing list