summaryrefslogtreecommitdiff
path: root/utils
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2012-03-15 18:05:57 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2012-03-15 18:05:57 +0000
commitbcfa982c4866fee5f86dca8c4bfc7425a9629f0d (patch)
tree4742e635a91d08f91f917b2355ada716e352689f /utils
parentd66b9a222b38d7d29646c582b70a1c107ca615de (diff)
downloadllvm-bcfa982c4866fee5f86dca8c4bfc7425a9629f0d.tar.gz
llvm-bcfa982c4866fee5f86dca8c4bfc7425a9629f0d.tar.bz2
llvm-bcfa982c4866fee5f86dca8c4bfc7425a9629f0d.tar.xz
Revert r152202: "Use uint16_t to store InstrNameIndices in MCInstrInfo."
We cannot limit the concatenated instruction names to 64K. ARM is already at 32K, and it is easy to imagine a target with more instructions. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152817 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'utils')
-rw-r--r--utils/TableGen/AsmMatcherEmitter.cpp18
-rw-r--r--utils/TableGen/AsmWriterEmitter.cpp11
-rw-r--r--utils/TableGen/InstrInfoEmitter.cpp12
-rw-r--r--utils/TableGen/StringToOffsetTable.h3
4 files changed, 16 insertions, 28 deletions
diff --git a/utils/TableGen/AsmMatcherEmitter.cpp b/utils/TableGen/AsmMatcherEmitter.cpp
index 4afee21523..cdcc496e7d 100644
--- a/utils/TableGen/AsmMatcherEmitter.cpp
+++ b/utils/TableGen/AsmMatcherEmitter.cpp
@@ -2023,7 +2023,7 @@ static void EmitCustomOperandParsing(raw_ostream &OS, CodeGenTarget &Target,
// Emit the static custom operand parsing table;
OS << "namespace {\n";
OS << " struct OperandMatchEntry {\n";
- OS << " static const char *const MnemonicTable;\n";
+ OS << " static const char *MnemonicTable;\n";
OS << " unsigned OperandMask;\n";
OS << " uint16_t Mnemonic;\n";
OS << " " << getMinimalTypeForRange(Info.Classes.size())
@@ -2079,9 +2079,8 @@ static void EmitCustomOperandParsing(raw_ostream &OS, CodeGenTarget &Target,
// Store a pascal-style length byte in the mnemonic.
std::string LenMnemonic = char(II.Mnemonic.size()) + II.Mnemonic.str();
- unsigned Idx = StringTable.GetOrAddStringOffset(LenMnemonic, false);
- assert(Idx <= 0xffff && "String offset too large to fit in table");
- OS << ", " << Idx << " /* " << II.Mnemonic << " */";
+ OS << ", " << StringTable.GetOrAddStringOffset(LenMnemonic, false)
+ << " /* " << II.Mnemonic << " */";
OS << ", " << OMI.CI->Name
<< ", ";
@@ -2098,7 +2097,7 @@ static void EmitCustomOperandParsing(raw_ostream &OS, CodeGenTarget &Target,
}
OS << "};\n\n";
- OS << "const char *const OperandMatchEntry::MnemonicTable =\n";
+ OS << "const char *OperandMatchEntry::MnemonicTable =\n";
StringTable.EmitString(OS);
OS << ";\n\n";
@@ -2321,7 +2320,7 @@ void AsmMatcherEmitter::run(raw_ostream &OS) {
// following the mnemonic.
OS << "namespace {\n";
OS << " struct MatchEntry {\n";
- OS << " static const char *const MnemonicTable;\n";
+ OS << " static const char *MnemonicTable;\n";
OS << " uint16_t Opcode;\n";
OS << " uint16_t Mnemonic;\n";
OS << " " << getMinimalTypeForRange(Info.Matchables.size())
@@ -2364,11 +2363,10 @@ void AsmMatcherEmitter::run(raw_ostream &OS) {
// Store a pascal-style length byte in the mnemonic.
std::string LenMnemonic = char(II.Mnemonic.size()) + II.Mnemonic.str();
- unsigned Idx = StringTable.GetOrAddStringOffset(LenMnemonic, false);
- assert(Idx <= 0xffff && "String offset too large to fit in table");
OS << " { " << Target.getName() << "::"
<< II.getResultInst()->TheDef->getName() << ", "
- << Idx << " /* " << II.Mnemonic << " */"
+ << StringTable.GetOrAddStringOffset(LenMnemonic, false)
+ << " /* " << II.Mnemonic << " */"
<< ", " << II.ConversionFnKind << ", { ";
for (unsigned i = 0, e = II.AsmOperands.size(); i != e; ++i) {
MatchableInfo::AsmOperand &Op = II.AsmOperands[i];
@@ -2392,7 +2390,7 @@ void AsmMatcherEmitter::run(raw_ostream &OS) {
OS << "};\n\n";
- OS << "const char *const MatchEntry::MnemonicTable =\n";
+ OS << "const char *MatchEntry::MnemonicTable =\n";
StringTable.EmitString(OS);
OS << ";\n\n";
diff --git a/utils/TableGen/AsmWriterEmitter.cpp b/utils/TableGen/AsmWriterEmitter.cpp
index 0ef5a93d56..c4812dcae6 100644
--- a/utils/TableGen/AsmWriterEmitter.cpp
+++ b/utils/TableGen/AsmWriterEmitter.cpp
@@ -306,7 +306,6 @@ void AsmWriterEmitter::EmitPrintInstruction(raw_ostream &O) {
}
// Bias offset by one since we want 0 as a sentinel.
- assert((Idx+1) <= 0xffff && "String offset too large to fit in table");
OpcodeInfo.push_back(Idx+1);
}
@@ -374,7 +373,7 @@ void AsmWriterEmitter::EmitPrintInstruction(raw_ostream &O) {
O << " };\n\n";
// Emit the string itself.
- O << " const char *const AsmStrs = \n";
+ O << " const char *AsmStrs = \n";
StringTable.EmitString(O);
O << ";\n\n";
@@ -497,9 +496,7 @@ emitRegisterNameString(raw_ostream &O, StringRef AltName,
}
}
- unsigned Idx = StringTable.GetOrAddStringOffset(AsmName);
- assert(Idx <= 0xffff && "String offset too large to fit in table");
- O << Idx;
+ O << StringTable.GetOrAddStringOffset(AsmName);
if (((i + 1) % 14) == 0)
O << ",\n ";
else
@@ -594,9 +591,7 @@ void AsmWriterEmitter::EmitGetInstructionName(raw_ostream &O) {
if ((i % 14) == 0)
O << "\n ";
- unsigned Idx = StringTable.GetOrAddStringOffset(AsmName);
- assert(Idx <= 0xffff && "String offset too large to fit in table");
- O << Idx << ", ";
+ O << StringTable.GetOrAddStringOffset(AsmName) << ", ";
}
O << "0\n"
<< " };\n"
diff --git a/utils/TableGen/InstrInfoEmitter.cpp b/utils/TableGen/InstrInfoEmitter.cpp
index 43ff20373d..0d278288ea 100644
--- a/utils/TableGen/InstrInfoEmitter.cpp
+++ b/utils/TableGen/InstrInfoEmitter.cpp
@@ -213,20 +213,18 @@ void InstrInfoEmitter::run(raw_ostream &OS) {
OperandInfoIDs, OS);
OS << "};\n\n";
- OS << "extern const uint16_t " << TargetName <<"InstrNameIndices[] = {\n ";
+ OS << "extern const unsigned " << TargetName <<"InstrNameIndices[] = {\n ";
StringToOffsetTable StringTable;
for (unsigned i = 0, e = NumberedInstructions.size(); i != e; ++i) {
const CodeGenInstruction *Instr = NumberedInstructions[i];
- unsigned Idx = StringTable.GetOrAddStringOffset(Instr->TheDef->getName());
- assert(Idx <= 0xffff && "String offset too large to fit in table");
- OS << Idx << "U, ";
+ OS << StringTable.GetOrAddStringOffset(Instr->TheDef->getName()) << "U, ";
if (i % 8 == 0)
OS << "\n ";
}
OS << "\n};\n\n";
- OS << "extern const char *const " << TargetName << "InstrNameData =\n";
+ OS << "const char *" << TargetName << "InstrNameData =\n";
StringTable.EmitString(OS);
OS << ";\n\n";
@@ -259,8 +257,8 @@ void InstrInfoEmitter::run(raw_ostream &OS) {
OS << "namespace llvm {\n";
OS << "extern const MCInstrDesc " << TargetName << "Insts[];\n";
- OS << "extern const uint16_t " << TargetName << "InstrNameIndices[];\n";
- OS << "extern const char *const " << TargetName << "InstrNameData;\n";
+ OS << "extern const unsigned " << TargetName << "InstrNameIndices[];\n";
+ OS << "extern const char *" << TargetName << "InstrNameData;\n";
OS << ClassName << "::" << ClassName << "(int SO, int DO)\n"
<< " : TargetInstrInfoImpl(SO, DO) {\n"
<< " InitMCInstrInfo(" << TargetName << "Insts, "
diff --git a/utils/TableGen/StringToOffsetTable.h b/utils/TableGen/StringToOffsetTable.h
index 6d528a2b0a..803f5bd5cf 100644
--- a/utils/TableGen/StringToOffsetTable.h
+++ b/utils/TableGen/StringToOffsetTable.h
@@ -40,9 +40,6 @@ public:
}
void EmitString(raw_ostream &O) {
- assert(AggregateString.size() <= 65536 &&
- "Aggregate string too large to be portable");
-
// Escape the string.
SmallString<256> Str;
raw_svector_ostream(Str).write_escaped(AggregateString);