[AArch64] Set MMOs on pre- and post-index instructions.
authorChad Rosier <mcrosier@codeaurora.org>
Thu, 28 Jan 2016 15:38:24 +0000 (15:38 +0000)
committerChad Rosier <mcrosier@codeaurora.org>
Thu, 28 Jan 2016 15:38:24 +0000 (15:38 +0000)
Without the MMOs the MI scheduler is unable to reason about the dependencies of
these instructions.

llvm-svn: 259052

llvm/lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp

index 48d49d8..120cba4 100644 (file)
@@ -1264,7 +1264,8 @@ AArch64LoadStoreOpt::mergeUpdateInsn(MachineBasicBlock::iterator I,
               .addOperand(getLdStRegOp(Update))
               .addOperand(getLdStRegOp(I))
               .addOperand(getLdStBaseOp(I))
-              .addImm(Value);
+              .addImm(Value)
+              .setMemRefs(I->memoperands_begin(), I->memoperands_end());
   } else {
     // Paired instruction.
     int Scale = getMemScale(I);
@@ -1273,7 +1274,8 @@ AArch64LoadStoreOpt::mergeUpdateInsn(MachineBasicBlock::iterator I,
               .addOperand(getLdStRegOp(I, 0))
               .addOperand(getLdStRegOp(I, 1))
               .addOperand(getLdStBaseOp(I))
-              .addImm(Value / Scale);
+              .addImm(Value / Scale)
+              .setMemRefs(I->memoperands_begin(), I->memoperands_end());
   }
   (void)MIB;