S12Z: GAS: New option --mdollar-hex.
[deliverable/binutils-gdb.git] / gas / config / tc-i386-intel.c
index 26fc3efe662c6acb811e17b936cb8dd180f8afda..a2cd286572d3fd7ab712fd3d49eba06755feb537 100644 (file)
@@ -1,5 +1,5 @@
 /* tc-i386.c -- Assemble Intel syntax code for ix86/x86-64
-   Copyright (C) 2009-2018 Free Software Foundation, Inc.
+   Copyright (C) 2009-2019 Free Software Foundation, Inc.
 
    This file is part of GAS, the GNU Assembler.
 
@@ -270,6 +270,12 @@ i386_intel_simplify_register (expressionS *e)
   else
     reg_num = e->X_md - 1;
 
+  if (reg_num < 0 || reg_num >= (int) i386_regtab_size)
+    {
+      as_bad (_("invalid register number"));
+      return 0;
+    }
+
   if (!intel_state.in_bracket)
     {
       if (i.op[this_operand].regs)
@@ -289,8 +295,7 @@ i386_intel_simplify_register (expressionS *e)
           && (i386_regtab[reg_num].reg_type.bitfield.xmmword
               || i386_regtab[reg_num].reg_type.bitfield.ymmword
               || i386_regtab[reg_num].reg_type.bitfield.zmmword
-              || i386_regtab[reg_num].reg_num == RegRiz
-              || i386_regtab[reg_num].reg_num == RegEiz))
+              || i386_regtab[reg_num].reg_num == RegIZ))
     intel_state.index = i386_regtab + reg_num;
   else if (!intel_state.base && !intel_state.in_scale)
     intel_state.base = i386_regtab + reg_num;
@@ -875,7 +880,7 @@ i386_intel_operand (char *operand_string, int got_a_float)
                      i.mem_operands = 0;
                      i.disp_operands = 0;
                      i.imm_operands = 2;
-                     i.types[0].bitfield.mem = 0;
+                     i.flags[0] &= ~Operand_Mem;
                      i.types[0].bitfield.disp16 = 0;
                      i.types[0].bitfield.disp32 = 0;
                      i.types[0].bitfield.disp32s = 0;
@@ -1009,7 +1014,7 @@ i386_intel_operand (char *operand_string, int got_a_float)
       if (!i386_index_check (operand_string))
        return 0;
 
-      i.types[this_operand].bitfield.mem = 1;
+      i.flags[this_operand] |= Operand_Mem;
       if (i.mem_operands == 0)
        i.memop1_string = xstrdup (operand_string);
       ++i.mem_operands;
This page took 0.06727 seconds and 4 git commands to generate.