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";