@@ -1986,16 +1986,16 @@ emitConvertFuncs(CodeGenTarget &Target, StringRef ClassName,
1986
1986
}
1987
1987
CvtOS << " assert(Kind < CVT_NUM_SIGNATURES && \" Invalid signature!\" );\n " ;
1988
1988
CvtOS << " const uint8_t *Converter = ConversionTable[Kind];\n " ;
1989
- CvtOS << " unsigned OpIdx;\n " ;
1990
1989
CvtOS << " Inst.setOpcode(Opcode);\n " ;
1991
1990
CvtOS << " for (const uint8_t *p = Converter; *p; p += 2) {\n " ;
1992
1991
if (HasOptionalOperands) {
1993
1992
// When optional operands are involved, formal and actual operand indices
1994
1993
// may differ. Map the former to the latter by subtracting the number of
1995
1994
// absent optional operands.
1996
- CvtOS << " OpIdx = *(p + 1) - DefaultsOffset[*(p + 1)];\n " ;
1995
+ // FIXME: This is not an operand index in the CVT_Tied case
1996
+ CvtOS << " unsigned OpIdx = *(p + 1) - DefaultsOffset[*(p + 1)];\n " ;
1997
1997
} else {
1998
- CvtOS << " OpIdx = *(p + 1);\n " ;
1998
+ CvtOS << " unsigned OpIdx = *(p + 1);\n " ;
1999
1999
}
2000
2000
CvtOS << " switch (*p) {\n " ;
2001
2001
CvtOS << " default: llvm_unreachable(\" invalid conversion entry!\" );\n " ;
@@ -2004,11 +2004,11 @@ emitConvertFuncs(CodeGenTarget &Target, StringRef ClassName,
2004
2004
<< " &>(*Operands[OpIdx]).addRegOperands(Inst, 1);\n " ;
2005
2005
CvtOS << " break;\n " ;
2006
2006
CvtOS << " case CVT_Tied: {\n " ;
2007
- CvtOS << " assert(OpIdx < (size_t)(std::end(TiedAsmOperandTable) -\n " ;
2007
+ CvtOS << " assert(*(p + 1) < (size_t)(std::end(TiedAsmOperandTable) -\n " ;
2008
2008
CvtOS
2009
2009
<< " std::begin(TiedAsmOperandTable)) &&\n " ;
2010
2010
CvtOS << " \" Tied operand not found\" );\n " ;
2011
- CvtOS << " unsigned TiedResOpnd = TiedAsmOperandTable[OpIdx ][0];\n " ;
2011
+ CvtOS << " unsigned TiedResOpnd = TiedAsmOperandTable[*(p + 1) ][0];\n " ;
2012
2012
CvtOS << " if (TiedResOpnd != (uint8_t)-1)\n " ;
2013
2013
CvtOS << " Inst.addOperand(Inst.getOperand(TiedResOpnd));\n " ;
2014
2014
CvtOS << " break;\n " ;
0 commit comments