x86: drop stale Mem enumerator

Message ID 45eba827-3bc9-0415-0344-d7c9a24f4f9d@suse.com
State New
Headers show
Series
  • x86: drop stale Mem enumerator
Related show

Commit Message

Jan Beulich July 5, 2019, 7:49 a.m.
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/
2019-07-05  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.

Comments

H.J. Lu July 16, 2019, 4:53 p.m. | #1
On Fri, Jul 5, 2019 at 12:50 AM Jan Beulich <JBeulich@suse.com> wrote:
>

> 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/

> 2019-07-05  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.

>


OK.

Thanks.


-- 
H.J.

Patch

--- a/opcodes/i386-gen.c
+++ b/opcodes/i386-gen.c
@@ -30,6 +30,10 @@ 
  #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);
--- a/opcodes/i386-opc.h
+++ b/opcodes/i386-opc.h
@@ -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 */