x86: drop stale Mem enumerator
authorJan Beulich <jbeulich@suse.com>
Wed, 17 Jul 2019 07:15:49 +0000 (09:15 +0200)
committerJan Beulich <jbeulich@suse.com>
Wed, 17 Jul 2019 07:15:49 +0000 (09:15 +0200)
This was supposed to also be removed by c48dadc9a8 ('x86: drop "mem"
operand type attribute').  It's odd enough that this hasn't caused
build issues, considering the careful use of OTunused (apparently to
avoid "missing initializer" warnings).

To avoid such happening again introduce compile time consistency
checks.

opcodes/ChangeLog
opcodes/i386-gen.c
opcodes/i386-opc.h

index c8af99f3623bb6abe59632b51d16191a65892008..254bc091f6a9896d9112d4738b250d00fe747c4b 100644 (file)
@@ -1,3 +1,11 @@
+2019-07-17  Jan Beulich  <jbeulich@suse.com>
+
+       * i386-gen.c (static_assert): Define.
+       (main): Use it.
+       * i386-opc.h (Opcode_Modifier_Max): Rename to ...
+       (Opcode_Modifier_Num): ... this.
+       (Mem): Delete.
+
 2019-07-16  Jan Beulich  <jbeulich@suse.com>
 
        * i386-gen.c (operand_types): Move RegMem ...
index f9201bb2d04e68a9df331afaeef38abdc29f212b..0c7ea10e2324461070f9bca0c025b3e1dabc12e2 100644 (file)
 #include <libintl.h>
 #define _(String) gettext (String)
 
+/* Build-time checks are preferrable over runtime ones.  Use this construct
+   in preference where possible.  */
+#define static_assert(e) ((void)sizeof (struct { int _:1 - 2 * !(e); }))
+
 static const char *program_name = NULL;
 static int debug = 0;
 
@@ -1665,9 +1669,13 @@ main (int argc, char **argv)
 
   /* Check the unused bitfield in i386_cpu_flags.  */
 #ifdef CpuUnused
+  static_assert (ARRAY_SIZE (cpu_flags) == CpuMax + 2);
+
   if ((cpumax - 1) != CpuMax)
     fail (_("CpuMax != %d!\n"), cpumax);
 #else
+  static_assert (ARRAY_SIZE (cpu_flags) == CpuMax + 1);
+
   if (cpumax != CpuMax)
     fail (_("CpuMax != %d!\n"), cpumax);
 
@@ -1676,8 +1684,14 @@ main (int argc, char **argv)
     fail (_("%d unused bits in i386_cpu_flags.\n"), c);
 #endif
 
+  static_assert (ARRAY_SIZE (opcode_modifiers) == Opcode_Modifier_Num);
+
   /* Check the unused bitfield in i386_operand_type.  */
-#ifndef OTUnused
+#ifdef OTUnused
+  static_assert (ARRAY_SIZE (operand_types) == OTNum + 1);
+#else
+  static_assert (ARRAY_SIZE (operand_types) == OTNum);
+
   c = OTNumOfBits - OTMax - 1;
   if (c)
     fail (_("%d unused bits in i386_operand_type.\n"), c);
index 4c38e9eb4bbdd825e4b97bbe74fa758b7ca5f2ed..4246d0be59225ede4645b2cc1c460333850a6462 100644 (file)
@@ -626,7 +626,7 @@ enum
   /* Intel64.  */
   Intel64,
   /* The last bitfield in i386_opcode_modifier.  */
-  Opcode_Modifier_Max
+  Opcode_Modifier_Num
 };
 
 typedef struct i386_opcode_modifier
@@ -757,8 +757,6 @@ enum
   JumpAbsolute,
   /* String insn operand with fixed es segment */
   EsSeg,
-  /* Memory.  */
-  Mem,
   /* BYTE size. */
   Byte,
   /* WORD size. 2 byte */