[NFC] Elminate some needless nested-map complexity.
authorOwen Anderson <resistor@mac.com>
Sat, 24 Dec 2022 05:03:23 +0000 (22:03 -0700)
committerOwen Anderson <resistor@mac.com>
Mon, 26 Dec 2022 02:36:27 +0000 (19:36 -0700)
Reviewed By: nikic

Differential Revision: https://reviews.llvm.org/D140648

llvm/utils/TableGen/FastISelEmitter.cpp

index 31a588a..0a88f67 100644 (file)
@@ -381,14 +381,9 @@ class FastISelMap {
   OperandsOpcodeTypeRetPredMap SimplePatterns;
 
   // This is used to check that there are no duplicate predicates
-  typedef std::multimap<std::string, bool> PredCheckMap;
-  typedef std::map<MVT::SimpleValueType, PredCheckMap> RetPredCheckMap;
-  typedef std::map<MVT::SimpleValueType, RetPredCheckMap> TypeRetPredCheckMap;
-  typedef std::map<std::string, TypeRetPredCheckMap> OpcodeTypeRetPredCheckMap;
-  typedef std::map<OperandsSignature, OpcodeTypeRetPredCheckMap>
-            OperandsOpcodeTypeRetPredCheckMap;
-
-  OperandsOpcodeTypeRetPredCheckMap SimplePatternsCheck;
+  std::set<std::tuple<OperandsSignature, std::string, MVT::SimpleValueType,
+                      MVT::SimpleValueType, std::string>>
+      SimplePatternsCheck;
 
   std::map<OperandsSignature, std::vector<OperandsSignature> >
     SignaturesWithConstantForms;
@@ -587,16 +582,15 @@ void FastISelMap::collectPatterns(CodeGenDAGPatterns &CGP) {
 
     int complexity = Pattern.getPatternComplexity(CGP);
 
-    if (SimplePatternsCheck[Operands][OpcodeName][VT]
-         [RetVT].count(PredicateCheck)) {
+    auto inserted_simple_pattern = SimplePatternsCheck.insert(
+        std::make_tuple(Operands, OpcodeName, VT, RetVT, PredicateCheck));
+    if (!inserted_simple_pattern.second) {
       PrintFatalError(Pattern.getSrcRecord()->getLoc(),
                     "Duplicate predicate in FastISel table!");
     }
-    SimplePatternsCheck[Operands][OpcodeName][VT][RetVT].insert(
-            std::make_pair(PredicateCheck, true));
 
-       // Note: Instructions with the same complexity will appear in the order
-          // that they are encountered.
+    // Note: Instructions with the same complexity will appear in the order
+    // that they are encountered.
     SimplePatterns[Operands][OpcodeName][VT][RetVT].emplace(complexity,
                                                             std::move(Memo));