diff --git a/lib/Target/ARM/ARMCodeEmitter.cpp b/lib/Target/ARM/ARMCodeEmitter.cpp index 7abb7d2418b..1484d165e45 100644 --- a/lib/Target/ARM/ARMCodeEmitter.cpp +++ b/lib/Target/ARM/ARMCodeEmitter.cpp @@ -372,7 +372,11 @@ unsigned ARMCodeEmitter::getAddrMode1InstrBinary(const MachineInstr &MI, } // Encode shifter operand. - if (TID.getNumOperands() - OpIdx > 1) + bool HasSoReg = (Format == ARMII::DPRdSoReg || + Format == ARMII::DPRnSoReg || + Format == ARMII::DPRSoReg || + Format == ARMII::DPRSoRegS); + if (HasSoReg) // Encode SoReg. return Binary | getMachineSoRegOpValue(MI, TID, OpIdx);