[PATCH] D88399: [TableGen] AsmMatcher: fix OpIdx of tied operands when HasOptionalOperands is true

TOCK Chiu via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sun Nov 29 19:35:37 PST 2020


TOCK updated this revision to Diff 308254.
TOCK added a comment.

Include full context.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D88399/new/

https://reviews.llvm.org/D88399

Files:
  llvm/utils/TableGen/AsmMatcherEmitter.cpp


Index: llvm/utils/TableGen/AsmMatcherEmitter.cpp
===================================================================
--- llvm/utils/TableGen/AsmMatcherEmitter.cpp
+++ llvm/utils/TableGen/AsmMatcherEmitter.cpp
@@ -1996,9 +1996,12 @@
   CvtOS << "      assert(OpIdx < (size_t)(std::end(TiedAsmOperandTable) -\n";
   CvtOS << "                              std::begin(TiedAsmOperandTable)) &&\n";
   CvtOS << "             \"Tied operand not found\");\n";
-  CvtOS << "      unsigned TiedResOpnd = TiedAsmOperandTable[OpIdx][0];\n";
-  CvtOS << "      if (TiedResOpnd != (uint8_t)-1)\n";
+  CvtOS << "      unsigned TiedResOpnd = TiedAsmOperandTable[*(p + 1)][0];\n";
+  CvtOS << "      if (TiedResOpnd != (uint8_t)-1) {\n";
+  if (HasOptionalOperands)
+    CvtOS << "        TiedResOpnd -= DefaultsOffset[TiedResOpnd];\n";
   CvtOS << "        Inst.addOperand(Inst.getOperand(TiedResOpnd));\n";
+  CvtOS << "      };\n";
   CvtOS << "      break;\n";
   CvtOS << "    }\n";
 


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D88399.308254.patch
Type: text/x-patch
Size: 974 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20201130/7230a4b1/attachment.bin>


More information about the llvm-commits mailing list