* config/tc-i386.c (process_suffix): Merge CODE_64BIT JumpByte
authorAlan Modra <amodra@gmail.com>
Fri, 12 Jul 2002 03:47:36 +0000 (03:47 +0000)
committerAlan Modra <amodra@gmail.com>
Fri, 12 Jul 2002 03:47:36 +0000 (03:47 +0000)
case with non CODE_64BIT case.  Don't warn on "qword ptr" if
not CODE_64BIT.

gas/ChangeLog
gas/config/tc-i386.c

index 1771741..bf3c845 100644 (file)
@@ -1,3 +1,9 @@
+2002-07-12  Alan Modra  <amodra@bigpond.net.au>
+
+       * config/tc-i386.c (process_suffix): Merge CODE_64BIT JumpByte
+       case with non CODE_64BIT case.  Don't warn on "qword ptr" if
+       not CODE_64BIT.
+
 2002-07-11  Alan Modra  <amodra@bigpond.net.au>
 
        * config/tc-ppc.c (ppc_elf_frob_symbol): Delete.
index 2711fee..c7dbfbd 100644 (file)
@@ -2228,8 +2228,10 @@ process_suffix ()
         size prefix, except for instructions that will ignore this
         prefix anyway.  */
       if (i.suffix != QWORD_MNEM_SUFFIX
-         && (i.suffix == LONG_MNEM_SUFFIX) == (flag_code == CODE_16BIT)
-         && !(i.tm.opcode_modifier & IgnoreSize))
+         && !(i.tm.opcode_modifier & IgnoreSize)
+         && ((i.suffix == LONG_MNEM_SUFFIX) == (flag_code == CODE_16BIT)
+             || (flag_code == CODE_64BIT
+                 && (i.tm.opcode_modifier & JumpByte))))
        {
          unsigned int prefix = DATA_PREFIX_OPCODE;
          if (i.tm.opcode_modifier & JumpByte) /* jcxz, loop */
@@ -2239,25 +2241,11 @@ process_suffix ()
            return 0;
        }
 
-      if (i.suffix != QWORD_MNEM_SUFFIX && (flag_code == CODE_64BIT)
-         && !(i.tm.opcode_modifier & IgnoreSize)
-         && (i.tm.opcode_modifier & JumpByte))
-       {
-         if (!add_prefix (ADDR_PREFIX_OPCODE))
-           return 0;
-       }
-
       /* Set mode64 for an operand.  */
       if (i.suffix == QWORD_MNEM_SUFFIX
+         && flag_code == CODE_64BIT
          && (i.tm.opcode_modifier & NoRex64) == 0)
-       {
-         i.rex |= REX_MODE64;
-         if (flag_code < CODE_64BIT)
-           {
-             as_bad (_("64bit operations available only in 64bit modes."));
-             return 0;
-           }
-       }
+       i.rex |= REX_MODE64;
 
       /* Size floating point instruction.  */
       if (i.suffix == LONG_MNEM_SUFFIX)