Yeah I noticed that and was planning to put it back. Making it const was done as part of my original change cause I happened to notice it wasn't, but failed to put it in the commit comments.<br><br><div class="gmail_quote">
On Thu, Mar 15, 2012 at 2:08 PM, Chris Lattner <span dir="ltr"><<a href="mailto:clattner@apple.com">clattner@apple.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="im"><br>
On Mar 15, 2012, at 11:05 AM, Jakob Stoklund Olesen wrote:<br>
<br>
> Author: stoklund<br>
> Date: Thu Mar 15 13:05:57 2012<br>
> New Revision: 152817<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=152817&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=152817&view=rev</a><br>
> Log:<br>
> Revert r152202: "Use uint16_t to store InstrNameIndices in MCInstrInfo."<br>
><br>
> We cannot limit the concatenated instruction names to 64K. ARM is<br>
> already at 32K, and it is easy to imagine a target with more<br>
> instructions.<br>
<br>
</div>Ok, but this also deconstifies OperandMatchEntry::MnemonicTable. That shouldn't depend on how many names there are.<br>
<span class="HOEnZb"><font color="#888888"><br>
-Chris<br>
</font></span><div class="HOEnZb"><div class="h5"><br>
><br>
> Modified:<br>
> llvm/trunk/include/llvm/MC/MCInstrInfo.h<br>
> llvm/trunk/utils/TableGen/AsmMatcherEmitter.cpp<br>
> llvm/trunk/utils/TableGen/AsmWriterEmitter.cpp<br>
> llvm/trunk/utils/TableGen/InstrInfoEmitter.cpp<br>
> llvm/trunk/utils/TableGen/StringToOffsetTable.h<br>
><br>
> Modified: llvm/trunk/include/llvm/MC/MCInstrInfo.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/MC/MCInstrInfo.h?rev=152817&r1=152816&r2=152817&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/MC/MCInstrInfo.h?rev=152817&r1=152816&r2=152817&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/include/llvm/MC/MCInstrInfo.h (original)<br>
> +++ llvm/trunk/include/llvm/MC/MCInstrInfo.h Thu Mar 15 13:05:57 2012<br>
> @@ -25,14 +25,14 @@<br>
> ///<br>
> class MCInstrInfo {<br>
> const MCInstrDesc *Desc; // Raw array to allow static init'n<br>
> - const uint16_t *InstrNameIndices; // Array for name indices in InstrNameData<br>
> + const unsigned *InstrNameIndices; // Array for name indices in InstrNameData<br>
> const char *InstrNameData; // Instruction name string pool<br>
> unsigned NumOpcodes; // Number of entries in the desc array<br>
><br>
> public:<br>
> /// InitMCInstrInfo - Initialize MCInstrInfo, called by TableGen<br>
> /// auto-generated routines. *DO NOT USE*.<br>
> - void InitMCInstrInfo(const MCInstrDesc *D, const uint16_t *NI, const char *ND,<br>
> + void InitMCInstrInfo(const MCInstrDesc *D, const unsigned *NI, const char *ND,<br>
> unsigned NO) {<br>
> Desc = D;<br>
> InstrNameIndices = NI;<br>
><br>
> Modified: llvm/trunk/utils/TableGen/AsmMatcherEmitter.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/AsmMatcherEmitter.cpp?rev=152817&r1=152816&r2=152817&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/AsmMatcherEmitter.cpp?rev=152817&r1=152816&r2=152817&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/utils/TableGen/AsmMatcherEmitter.cpp (original)<br>
> +++ llvm/trunk/utils/TableGen/AsmMatcherEmitter.cpp Thu Mar 15 13:05:57 2012<br>
> @@ -2023,7 +2023,7 @@<br>
> // Emit the static custom operand parsing table;<br>
> OS << "namespace {\n";<br>
> OS << " struct OperandMatchEntry {\n";<br>
> - OS << " static const char *const MnemonicTable;\n";<br>
> + OS << " static const char *MnemonicTable;\n";<br>
> OS << " unsigned OperandMask;\n";<br>
> OS << " uint16_t Mnemonic;\n";<br>
> OS << " " << getMinimalTypeForRange(Info.Classes.size())<br>
> @@ -2079,9 +2079,8 @@<br>
><br>
> // Store a pascal-style length byte in the mnemonic.<br>
> std::string LenMnemonic = char(II.Mnemonic.size()) + II.Mnemonic.str();<br>
> - unsigned Idx = StringTable.GetOrAddStringOffset(LenMnemonic, false);<br>
> - assert(Idx <= 0xffff && "String offset too large to fit in table");<br>
> - OS << ", " << Idx << " /* " << II.Mnemonic << " */";<br>
> + OS << ", " << StringTable.GetOrAddStringOffset(LenMnemonic, false)<br>
> + << " /* " << II.Mnemonic << " */";<br>
><br>
> OS << ", " << OMI.CI->Name<br>
> << ", ";<br>
> @@ -2098,7 +2097,7 @@<br>
> }<br>
> OS << "};\n\n";<br>
><br>
> - OS << "const char *const OperandMatchEntry::MnemonicTable =\n";<br>
> + OS << "const char *OperandMatchEntry::MnemonicTable =\n";<br>
> StringTable.EmitString(OS);<br>
> OS << ";\n\n";<br>
><br>
> @@ -2321,7 +2320,7 @@<br>
> // following the mnemonic.<br>
> OS << "namespace {\n";<br>
> OS << " struct MatchEntry {\n";<br>
> - OS << " static const char *const MnemonicTable;\n";<br>
> + OS << " static const char *MnemonicTable;\n";<br>
> OS << " uint16_t Opcode;\n";<br>
> OS << " uint16_t Mnemonic;\n";<br>
> OS << " " << getMinimalTypeForRange(Info.Matchables.size())<br>
> @@ -2364,11 +2363,10 @@<br>
><br>
> // Store a pascal-style length byte in the mnemonic.<br>
> std::string LenMnemonic = char(II.Mnemonic.size()) + II.Mnemonic.str();<br>
> - unsigned Idx = StringTable.GetOrAddStringOffset(LenMnemonic, false);<br>
> - assert(Idx <= 0xffff && "String offset too large to fit in table");<br>
> OS << " { " << Target.getName() << "::"<br>
> << II.getResultInst()->TheDef->getName() << ", "<br>
> - << Idx << " /* " << II.Mnemonic << " */"<br>
> + << StringTable.GetOrAddStringOffset(LenMnemonic, false)<br>
> + << " /* " << II.Mnemonic << " */"<br>
> << ", " << II.ConversionFnKind << ", { ";<br>
> for (unsigned i = 0, e = II.AsmOperands.size(); i != e; ++i) {<br>
> MatchableInfo::AsmOperand &Op = II.AsmOperands[i];<br>
> @@ -2392,7 +2390,7 @@<br>
><br>
> OS << "};\n\n";<br>
><br>
> - OS << "const char *const MatchEntry::MnemonicTable =\n";<br>
> + OS << "const char *MatchEntry::MnemonicTable =\n";<br>
> StringTable.EmitString(OS);<br>
> OS << ";\n\n";<br>
><br>
><br>
> Modified: llvm/trunk/utils/TableGen/AsmWriterEmitter.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/AsmWriterEmitter.cpp?rev=152817&r1=152816&r2=152817&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/AsmWriterEmitter.cpp?rev=152817&r1=152816&r2=152817&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/utils/TableGen/AsmWriterEmitter.cpp (original)<br>
> +++ llvm/trunk/utils/TableGen/AsmWriterEmitter.cpp Thu Mar 15 13:05:57 2012<br>
> @@ -306,7 +306,6 @@<br>
> }<br>
><br>
> // Bias offset by one since we want 0 as a sentinel.<br>
> - assert((Idx+1) <= 0xffff && "String offset too large to fit in table");<br>
> OpcodeInfo.push_back(Idx+1);<br>
> }<br>
><br>
> @@ -374,7 +373,7 @@<br>
> O << " };\n\n";<br>
><br>
> // Emit the string itself.<br>
> - O << " const char *const AsmStrs = \n";<br>
> + O << " const char *AsmStrs = \n";<br>
> StringTable.EmitString(O);<br>
> O << ";\n\n";<br>
><br>
> @@ -497,9 +496,7 @@<br>
> }<br>
> }<br>
><br>
> - unsigned Idx = StringTable.GetOrAddStringOffset(AsmName);<br>
> - assert(Idx <= 0xffff && "String offset too large to fit in table");<br>
> - O << Idx;<br>
> + O << StringTable.GetOrAddStringOffset(AsmName);<br>
> if (((i + 1) % 14) == 0)<br>
> O << ",\n ";<br>
> else<br>
> @@ -594,9 +591,7 @@<br>
> if ((i % 14) == 0)<br>
> O << "\n ";<br>
><br>
> - unsigned Idx = StringTable.GetOrAddStringOffset(AsmName);<br>
> - assert(Idx <= 0xffff && "String offset too large to fit in table");<br>
> - O << Idx << ", ";<br>
> + O << StringTable.GetOrAddStringOffset(AsmName) << ", ";<br>
> }<br>
> O << "0\n"<br>
> << " };\n"<br>
><br>
> Modified: llvm/trunk/utils/TableGen/InstrInfoEmitter.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/InstrInfoEmitter.cpp?rev=152817&r1=152816&r2=152817&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/InstrInfoEmitter.cpp?rev=152817&r1=152816&r2=152817&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/utils/TableGen/InstrInfoEmitter.cpp (original)<br>
> +++ llvm/trunk/utils/TableGen/InstrInfoEmitter.cpp Thu Mar 15 13:05:57 2012<br>
> @@ -213,20 +213,18 @@<br>
> OperandInfoIDs, OS);<br>
> OS << "};\n\n";<br>
><br>
> - OS << "extern const uint16_t " << TargetName <<"InstrNameIndices[] = {\n ";<br>
> + OS << "extern const unsigned " << TargetName <<"InstrNameIndices[] = {\n ";<br>
> StringToOffsetTable StringTable;<br>
> for (unsigned i = 0, e = NumberedInstructions.size(); i != e; ++i) {<br>
> const CodeGenInstruction *Instr = NumberedInstructions[i];<br>
> - unsigned Idx = StringTable.GetOrAddStringOffset(Instr->TheDef->getName());<br>
> - assert(Idx <= 0xffff && "String offset too large to fit in table");<br>
> - OS << Idx << "U, ";<br>
> + OS << StringTable.GetOrAddStringOffset(Instr->TheDef->getName()) << "U, ";<br>
> if (i % 8 == 0)<br>
> OS << "\n ";<br>
> }<br>
><br>
> OS << "\n};\n\n";<br>
><br>
> - OS << "extern const char *const " << TargetName << "InstrNameData =\n";<br>
> + OS << "const char *" << TargetName << "InstrNameData =\n";<br>
> StringTable.EmitString(OS);<br>
> OS << ";\n\n";<br>
><br>
> @@ -259,8 +257,8 @@<br>
><br>
> OS << "namespace llvm {\n";<br>
> OS << "extern const MCInstrDesc " << TargetName << "Insts[];\n";<br>
> - OS << "extern const uint16_t " << TargetName << "InstrNameIndices[];\n";<br>
> - OS << "extern const char *const " << TargetName << "InstrNameData;\n";<br>
> + OS << "extern const unsigned " << TargetName << "InstrNameIndices[];\n";<br>
> + OS << "extern const char *" << TargetName << "InstrNameData;\n";<br>
> OS << ClassName << "::" << ClassName << "(int SO, int DO)\n"<br>
> << " : TargetInstrInfoImpl(SO, DO) {\n"<br>
> << " InitMCInstrInfo(" << TargetName << "Insts, "<br>
><br>
> Modified: llvm/trunk/utils/TableGen/StringToOffsetTable.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/StringToOffsetTable.h?rev=152817&r1=152816&r2=152817&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/StringToOffsetTable.h?rev=152817&r1=152816&r2=152817&view=diff</a><br>
> ==============================================================================<br>
> --- llvm/trunk/utils/TableGen/StringToOffsetTable.h (original)<br>
> +++ llvm/trunk/utils/TableGen/StringToOffsetTable.h Thu Mar 15 13:05:57 2012<br>
> @@ -40,9 +40,6 @@<br>
> }<br>
><br>
> void EmitString(raw_ostream &O) {<br>
> - assert(AggregateString.size() <= 65536 &&<br>
> - "Aggregate string too large to be portable");<br>
> -<br>
> // Escape the string.<br>
> SmallString<256> Str;<br>
> raw_svector_ostream(Str).write_escaped(AggregateString);<br>
><br>
><br>
> _______________________________________________<br>
> llvm-commits mailing list<br>
> <a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>~Craig<br>