mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-20 16:17:38 +00:00
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:
@@ -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"
|
||||
|
||||
Reference in New Issue
Block a user