x86: Use unsigned int to iterate through vector operands
authorH.J. Lu <hjl.tools@gmail.com>
Tue, 24 Jul 2018 16:47:47 +0000 (09:47 -0700)
committerH.J. Lu <hjl.tools@gmail.com>
Tue, 24 Jul 2018 16:51:08 +0000 (09:51 -0700)
Use unsigned int to iterate through multi-length vector operands to avoid
sign-extension.

* config/tc-i386.c (build_vex_prefix): Use unsigned int to
iterate through multi-length vector operands.
(build_evex_prefix): Likewise.

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

index 7fb92597f0972428831343a10102df56898d22cc..c0b6801f893528127d2eaf71c0693269f99e5132 100644 (file)
@@ -1,3 +1,9 @@
+2018-07-24  H.J. Lu  <hongjiu.lu@intel.com>
+
+       * config/tc-i386.c (build_vex_prefix): Use unsigned int to
+       iterate through multi-length vector operands.
+       (build_evex_prefix): Likewise.
+
 2018-07-24  Jan Beulich  <jbeulich@suse.com>
 
        * config/tc-i386.c (check_VecOperands): Handle EVEXLIG when
index 81643a73ac4aaf9909ac54716f9605c909e83542..bcd2904044c86b8068ce4c1ed524e290bcc276fa 100644 (file)
@@ -3362,12 +3362,12 @@ build_vex_prefix (const insn_template *t)
     vector_length = 1;
   else
     {
-      int op;
+      unsigned int op;
 
       /* Determine vector length from the last multi-length vector
         operand.  */
       vector_length = 0;
-      for (op = t->operands - 1; op >= 0; op--)
+      for (op = t->operands; op--;)
        if (t->operand_types[op].bitfield.xmmword
            && t->operand_types[op].bitfield.ymmword
            && i.types[op].bitfield.ymmword)
@@ -3612,12 +3612,12 @@ build_evex_prefix (void)
       if (!i.tm.opcode_modifier.evex
          || i.tm.opcode_modifier.evex == EVEXDYN)
        {
-         int op;
+         unsigned int op;
 
          /* Determine vector length from the last multi-length vector
             operand.  */
          vec_length = 0;
-         for (op = i.operands - 1; op >= 0; op--)
+         for (op = i.operands; op--;)
            if (i.tm.operand_types[op].bitfield.xmmword
                + i.tm.operand_types[op].bitfield.ymmword
                + i.tm.operand_types[op].bitfield.zmmword > 1)
@@ -3658,7 +3658,7 @@ build_evex_prefix (void)
                  }
              }
 
-         if (op < 0)
+         if (op >= MAX_OPERANDS)
            abort ();
        }