[PATCH] D111962: [TableGen] Fix codgen of InstrMapping with multiple columns and values

Jyun-Yan You via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sun Oct 17 07:01:16 PDT 2021


jyyou.tw created this revision.
jyyou.tw requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

This patch fixes invalid syntax of generated code for InstrMapping
that has multiple columns and values.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D111962

Files:
  llvm/utils/TableGen/CodeGenMapTable.cpp


Index: llvm/utils/TableGen/CodeGenMapTable.cpp
===================================================================
--- llvm/utils/TableGen/CodeGenMapTable.cpp
+++ llvm/utils/TableGen/CodeGenMapTable.cpp
@@ -443,14 +443,16 @@
   if (ValueCols.size() > 1) {
     for (unsigned i = 0, e = ValueCols.size(); i < e; i++) {
       ListInit *ColumnI = ValueCols[i];
+      OS << "  if (";
       for (unsigned j = 0, ColSize = ColumnI->size(); j < ColSize; ++j) {
         std::string ColName = ColFields->getElement(j)->getAsUnquotedString();
-        OS << "  if (in" << ColName;
+        OS << "in" << ColName;
         OS << " == ";
         OS << ColName << "_" << ColumnI->getElement(j)->getAsUnquotedString();
-        if (j < ColumnI->size() - 1) OS << " && ";
-        else OS << ")\n";
+        if (j < ColumnI->size() - 1)
+          OS << " && ";
       }
+      OS << ")\n";
       OS << "    return " << InstrMapDesc.getName();
       OS << "Table[mid]["<<i+1<<"];\n";
     }
@@ -480,9 +482,10 @@
   if (ValueCols.size() > 1) {
     for (Init *CF : ColFields->getValues()) {
       std::string ColName = CF->getAsUnquotedString();
-      OS << ", enum " << ColName << " in" << ColName << ") {\n";
+      OS << ", enum " << ColName << " in" << ColName;
     }
-  } else { OS << ") {\n"; }
+  }
+  OS << ") {\n";
 
   // Emit map table.
   unsigned TableSize = emitBinSearchTable(OS);


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D111962.380243.patch
Type: text/x-patch
Size: 1390 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20211017/ede23435/attachment.bin>


More information about the llvm-commits mailing list