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>