diff --git a/utils/TableGen/AsmMatcherEmitter.cpp b/utils/TableGen/AsmMatcherEmitter.cpp index 5a56d6494a6..df089cbf0ea 100644 --- a/utils/TableGen/AsmMatcherEmitter.cpp +++ b/utils/TableGen/AsmMatcherEmitter.cpp @@ -1927,10 +1927,11 @@ getConverterOperandID(const std::string &Name, return ID; } -static void emitConvertFuncs(CodeGenTarget &Target, StringRef ClassName, - std::vector> &Infos, - bool HasMnemonicFirst, bool HasOptionalOperands, - raw_ostream &OS) { +static unsigned +emitConvertFuncs(CodeGenTarget &Target, StringRef ClassName, + std::vector> &Infos, + bool HasMnemonicFirst, bool HasOptionalOperands, + raw_ostream &OS) { SmallSetVector OperandConversionKinds; SmallSetVector InstructionConversionKinds; std::vector > ConversionTable; @@ -2336,6 +2337,8 @@ static void emitConvertFuncs(CodeGenTarget &Target, StringRef ClassName, // Spit out the operand number lookup function. OS << OpOS.str(); + + return ConversionTable.size(); } /// emitMatchClassEnumeration - Emit the enumeration for match class kinds. @@ -3274,8 +3277,9 @@ void AsmMatcherEmitter::run(raw_ostream &OS) { // Generate the convertToMCInst function to convert operands into an MCInst. // Also, generate the convertToMapAndConstraints function for MS-style inline // assembly. The latter doesn't actually generate a MCInst. - emitConvertFuncs(Target, ClassName, Info.Matchables, HasMnemonicFirst, - HasOptionalOperands, OS); + unsigned NumConverters = emitConvertFuncs(Target, ClassName, Info.Matchables, + HasMnemonicFirst, + HasOptionalOperands, OS); // Emit the enumeration for classes which participate in matching. emitMatchClassEnumeration(Target, Info.Classes, OS); @@ -3390,7 +3394,7 @@ void AsmMatcherEmitter::run(raw_ostream &OS) { OS << " " << getMinimalTypeForRange(MaxMnemonicIndex) << " Mnemonic;\n"; OS << " uint16_t Opcode;\n"; - OS << " " << getMinimalTypeForRange(Info.Matchables.size()) + OS << " " << getMinimalTypeForRange(NumConverters) << " ConvertFn;\n"; OS << " " << getMinimalTypeForRange(FeatureBitsets.size()) << " RequiredFeaturesIdx;\n";