[PATCH] D62119: [RISCV] prefer std::set to std::map
Nick Desaulniers via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Sun May 19 20:27:12 PDT 2019
nickdesaulniers created this revision.
nickdesaulniers added reviewers: sabuasal, asb.
Herald added subscribers: llvm-commits, benna, psnobl, jocewei, PkmX, rkruppe, the_o, brucehoult, MartinMosbeck, rogfer01, edward-jones, zzheng, jrtc27, shiva0217, kito-cheng, niosHD, apazos, simoncook, johnrusso, rbar.
Herald added a project: LLVM.
This was flagged in https://www.viva64.com/en/b/0629/ under "Snippet No.
21".
It seems that a std::map is created, but only the keys are ever used.
______________________________________
< It looks like you meant to use a set >
--------------------------------------
\
\
__
/ \
| |
@ @
| |
|| |/
|| ||
|\_/|
\___/
Yes we did! Thanks Clippy! (yay!)
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D62119
Files:
llvm/utils/TableGen/RISCVCompressInstEmitter.cpp
Index: llvm/utils/TableGen/RISCVCompressInstEmitter.cpp
===================================================================
--- llvm/utils/TableGen/RISCVCompressInstEmitter.cpp
+++ llvm/utils/TableGen/RISCVCompressInstEmitter.cpp
@@ -64,6 +64,7 @@
#include "llvm/TableGen/Error.h"
#include "llvm/TableGen/Record.h"
#include "llvm/TableGen/TableGenBackend.h"
+#include <set>
#include <vector>
using namespace llvm;
@@ -474,7 +475,7 @@
SourceOperandMap, DestOperandMap));
}
-static void getReqFeatures(std::map<StringRef, int> &FeaturesMap,
+static void getReqFeatures(std::set<StringRef> &Features,
const std::vector<Record *> &ReqFeatures) {
for (auto &R : ReqFeatures) {
StringRef AsmCondString = R->getValueAsString("AssemblerCondString");
@@ -486,8 +487,7 @@
for (auto &Op : Ops) {
assert(!Op.empty() && "Empty operator");
- if (FeaturesMap.find(Op) == FeaturesMap.end())
- FeaturesMap[Op] = FeaturesMap.size();
+ Features.emplace(Op);
}
}
}
@@ -620,30 +620,32 @@
CaseStream.indent(4) << "case " + Namespace + "::" + CurOp + ": {\n";
}
- std::map<StringRef, int> FeaturesMap;
- // Add CompressPat required features.
- getReqFeatures(FeaturesMap, CompressPat.PatReqFeatures);
-
- // Add Dest instruction required features.
- std::vector<Record *> ReqFeatures;
- std::vector<Record *> RF = Dest.TheDef->getValueAsListOfDefs("Predicates");
- copy_if(RF, std::back_inserter(ReqFeatures), [](Record *R) {
- return R->getValueAsBit("AssemblerMatcherPredicate");
- });
- getReqFeatures(FeaturesMap, ReqFeatures);
-
- // Emit checks for all required features.
- for (auto &F : FeaturesMap) {
- StringRef Op = F.first;
- if (Op[0] == '!')
- CondStream.indent(6) << ("!STI.getFeatureBits()[" + Namespace +
- "::" + Op.substr(1) + "]")
- .str() +
- " &&\n";
- else
- CondStream.indent(6)
- << ("STI.getFeatureBits()[" + Namespace + "::" + Op + "]").str() +
- " &&\n";
+ {
+ std::set<StringRef> Features;
+ // Add CompressPat required features.
+ getReqFeatures(Features, CompressPat.PatReqFeatures);
+
+ // Add Dest instruction required features.
+ std::vector<Record *> ReqFeatures;
+ std::vector<Record *> RF =
+ Dest.TheDef->getValueAsListOfDefs("Predicates");
+ copy_if(RF, std::back_inserter(ReqFeatures), [](Record *R) {
+ return R->getValueAsBit("AssemblerMatcherPredicate");
+ });
+ getReqFeatures(Features, ReqFeatures);
+
+ // Emit checks for all required features.
+ for (const StringRef &Op : Features) {
+ if (Op[0] == '!')
+ CondStream.indent(6) << ("!STI.getFeatureBits()[" + Namespace +
+ "::" + Op.substr(1) + "]")
+ .str() +
+ " &&\n";
+ else
+ CondStream.indent(6)
+ << ("STI.getFeatureBits()[" + Namespace + "::" + Op + "]").str() +
+ " &&\n";
+ }
}
// Start Source Inst operands validation.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D62119.200200.patch
Type: text/x-patch
Size: 3316 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190520/92729e56/attachment.bin>
More information about the llvm-commits
mailing list