Don't forget to update the current operand when getting the size of an instruction.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@50007 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/Target/X86/X86InstrInfo.cpp b/lib/Target/X86/X86InstrInfo.cpp
index 280809d..8b31f5d 100644
--- a/lib/Target/X86/X86InstrInfo.cpp
+++ b/lib/Target/X86/X86InstrInfo.cpp
@@ -2670,6 +2670,7 @@
 
   case X86II::AddRegFrm:
     ++FinalSize;
+    ++CurOp;
     
     if (CurOp != NumOps) {
       const MachineOperand &MO1 = MI.getOperand(CurOp++);
@@ -2696,16 +2697,20 @@
     ++FinalSize; 
     FinalSize += sizeRegModRMByte();
     CurOp += 2;
-    if (CurOp != NumOps)
+    if (CurOp != NumOps) {
+      ++CurOp;
       FinalSize += sizeConstant(X86InstrInfo::sizeOfImm(Desc));
+    }
     break;
   }
   case X86II::MRMDestMem: {
     ++FinalSize;
     FinalSize += getMemModRMByteSize(MI, CurOp, IsPIC, Is64BitMode);
     CurOp += 5;
-    if (CurOp != NumOps)
+    if (CurOp != NumOps) {
+      ++CurOp;
       FinalSize += sizeConstant(X86InstrInfo::sizeOfImm(Desc));
+    }
     break;
   }
 
@@ -2713,8 +2718,10 @@
     ++FinalSize;
     FinalSize += sizeRegModRMByte();
     CurOp += 2;
-    if (CurOp != NumOps)
+    if (CurOp != NumOps) {
+      ++CurOp;
       FinalSize += sizeConstant(X86InstrInfo::sizeOfImm(Desc));
+    }
     break;
 
   case X86II::MRMSrcMem: {
@@ -2722,8 +2729,10 @@
     ++FinalSize;
     FinalSize += getMemModRMByteSize(MI, CurOp+1, IsPIC, Is64BitMode);
     CurOp += 5;
-    if (CurOp != NumOps)
+    if (CurOp != NumOps) {
+      ++CurOp;
       FinalSize += sizeConstant(X86InstrInfo::sizeOfImm(Desc));
+    }
     break;
   }
 
@@ -2732,6 +2741,7 @@
   case X86II::MRM4r: case X86II::MRM5r:
   case X86II::MRM6r: case X86II::MRM7r:
     ++FinalSize;
+    ++CurOp;
     FinalSize += sizeRegModRMByte();
 
     if (CurOp != NumOps) {