Improve handling of #-0 offsets for many more pre-indexed addressing modes.
[oota-llvm.git] / lib / Target / ARM / InstPrinter / ARMInstPrinter.cpp
index 2c96eb74ebc7cb9b9d7a482a247ac7484ed6e8cf..c421f1cda46e8d63ec314cd0cca4a0d4fb314a0c 100644 (file)
@@ -168,6 +168,7 @@ void ARMInstPrinter::printInst(const MCInst *MI, raw_ostream &O) {
   if (Opcode == ARM::tMOVr && MI->getOperand(0).getReg() == ARM::R8 &&
       MI->getOperand(1).getReg() == ARM::R8) {
     O << "\tnop";
+    printPredicateOperand(MI, 2, O);
     return;
   }
 
@@ -445,7 +446,9 @@ void ARMInstPrinter::printAddrMode5Operand(const MCInst *MI, unsigned OpNum,
 
   O << "[" << getRegisterName(MO1.getReg());
 
-  if (unsigned ImmOffs = ARM_AM::getAM5Offset(MO2.getImm())) {
+  unsigned ImmOffs = ARM_AM::getAM5Offset(MO2.getImm());
+  unsigned Op = ARM_AM::getAM5Op(MO2.getImm());
+  if (ImmOffs || Op == ARM_AM::sub) {
     O << ", #"
       << ARM_AM::getAddrOpcStr(ARM_AM::getAM5Op(MO2.getImm()))
       << ImmOffs * 4;