aboutsummaryrefslogtreecommitdiffstats
path: root/utils/TableGen/AsmWriterEmitter.cpp
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@gmail.com>2012-03-08 06:55:27 +0000
committerCraig Topper <craig.topper@gmail.com>2012-03-08 06:55:27 +0000
commit88d2fa438a5b9feb7da77e4beeaa00944ae4168e (patch)
tree78670ed745845060a34061c675e15f0ba9026d25 /utils/TableGen/AsmWriterEmitter.cpp
parent8c0152f8a557742efddc57c3993c2c0a3a79ca4d (diff)
downloadexternal_llvm-88d2fa438a5b9feb7da77e4beeaa00944ae4168e.zip
external_llvm-88d2fa438a5b9feb7da77e4beeaa00944ae4168e.tar.gz
external_llvm-88d2fa438a5b9feb7da77e4beeaa00944ae4168e.tar.bz2
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
Diffstat (limited to 'utils/TableGen/AsmWriterEmitter.cpp')
-rw-r--r--utils/TableGen/AsmWriterEmitter.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/utils/TableGen/AsmWriterEmitter.cpp b/utils/TableGen/AsmWriterEmitter.cpp
index 59926a3..7671efd 100644
--- a/utils/TableGen/AsmWriterEmitter.cpp
+++ b/utils/TableGen/AsmWriterEmitter.cpp
@@ -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"