X86Disassembler: Fix undefined behavior found by GCC 4.6
authorBenjamin Kramer <benny.kra@googlemail.com>
Sun, 1 Jan 2012 17:55:36 +0000 (17:55 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Sun, 1 Jan 2012 17:55:36 +0000 (17:55 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@147404 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/Disassembler/X86DisassemblerDecoder.c

index c915df0049f8d61b264beb5fd744d6c76b04cce0..2ab2f74af94eba8a98399b9dfbd4d7acf4602e03 100644 (file)
@@ -1502,9 +1502,11 @@ static int readOperands(struct InternalInstruction* insn) {
       return -1;
     case ENCODING_IB:
       if (sawRegImm) {
-        // saw a register immediate so don't read again and instead split the previous immediate
-        // FIXME: This is a hack
-        insn->immediates[insn->numImmediatesConsumed++] = insn->immediates[insn->numImmediatesConsumed - 1] & 0xf;
+        // Saw a register immediate so don't read again and instead split the
+        // previous immediate.  FIXME: This is a hack
+        insn->immediates[insn->numImmediatesConsumed] =
+          insn->immediates[insn->numImmediatesConsumed - 1] & 0xf;
+        ++insn->numImmediatesConsumed;
         break;
       }
       if (readImmediate(insn, 1))