Change unsigned to a uint16_t in static disassembler tables to reduce the table size.
authorCraig Topper <craig.topper@gmail.com>
Tue, 11 Sep 2012 04:19:21 +0000 (04:19 +0000)
committerCraig Topper <craig.topper@gmail.com>
Tue, 11 Sep 2012 04:19:21 +0000 (04:19 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@163594 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/Disassembler/X86Disassembler.h
lib/Target/X86/Disassembler/X86DisassemblerDecoder.h
utils/TableGen/X86DisassemblerTables.cpp

index 0dbfa260014bc4b8db1f216f095cdd281e96749d..981701f52764522c0f811287192d9bf69815db0f 100644 (file)
@@ -78,7 +78,7 @@
   uint16_t operands;
 
 #define INSTRUCTION_IDS               \
-  unsigned instructionIDs;
+  uint16_t instructionIDs;
 
 #include "X86DisassemblerDecoderCommon.h"
 
index 05cbb4c597567cba10ba5d1bf20bcf61f0e66ff4..407ead3cafa9946af389456d29409e746002522d 100644 (file)
@@ -24,7 +24,7 @@ extern "C" {
   uint16_t operands;
 
 #define INSTRUCTION_IDS     \
-  unsigned instructionIDs;
+  uint16_t instructionIDs;
 
 #include "X86DisassemblerDecoderCommon.h"
 
index f3bd373708f781de63a3392d118d4b3cdac3ca62..8526621599a911af457fbd57d377f4da8a580241 100644 (file)
@@ -366,6 +366,10 @@ void DisassemblerTables::emitModRMDecision(raw_ostream &o1, raw_ostream &o2,
       break;
   }
 
+  // We assume that the index can fit into uint16_t.
+  assert(sEntryNumber < 65536U &&
+         "Index into ModRMDecision is too large for uint16_t!");
+
   ++sTableNumber;
 }