Re-commit r152202 hopefully fixing the MSVC linker error.

Original commit message:
Use uint16_t to store InstrNameIndices in MCInstrInfo. Add asserts to protect all 16-bit string table offsets. Also make sure the string to offset table string is not larger than 65536 characters since larger string literals aren't portable.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152296 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Craig Topper
2012-03-08 06:55:27 +00:00
parent 8c0152f8a5
commit 88d2fa438a
5 changed files with 30 additions and 18 deletions
+8 -3
View File
@@ -306,6 +306,7 @@ 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);
}
@@ -373,7 +374,7 @@ void AsmWriterEmitter::EmitPrintInstruction(raw_ostream &O) {
O << " };\n\n";
// Emit the string itself.
O << " const char *AsmStrs = \n";
O << " const char *const AsmStrs = \n";
StringTable.EmitString(O);
O << ";\n\n";
@@ -496,7 +497,9 @@ emitRegisterNameString(raw_ostream &O, StringRef AltName,
}
}
O << StringTable.GetOrAddStringOffset(AsmName);
unsigned Idx = StringTable.GetOrAddStringOffset(AsmName);
assert(Idx <= 0xffff && "String offset too large to fit in table");
O << Idx;
if (((i + 1) % 14) == 0)
O << ",\n ";
else
@@ -591,7 +594,9 @@ void AsmWriterEmitter::EmitGetInstructionName(raw_ostream &O) {
if ((i % 14) == 0)
O << "\n ";
O << StringTable.GetOrAddStringOffset(AsmName) << ", ";
unsigned Idx = StringTable.GetOrAddStringOffset(AsmName);
assert(Idx <= 0xffff && "String offset too large to fit in table");
O << Idx << ", ";
}
O << "0\n"
<< " };\n"