ARM: add correct kill flags when combining stm instructions
[oota-llvm.git] / lib / Target / ARM / ARMLoadStoreOptimizer.cpp
index 33ca20a3e3e61952f2f7ea8c83f5b0943dea7745..245c9e869bf67d602bac352da93471b15b68aea1 100644 (file)
@@ -743,6 +743,12 @@ void ARMLoadStoreOpt::MergeOpsUpdate(MachineBasicBlock &MBB,
     }
   }
 
+  for (unsigned i = memOpsBegin; i < memOpsEnd; ++i) {
+    MachineOperand &TransferOp = memOps[i].MBBI->getOperand(0);
+    if (TransferOp.isUse() && TransferOp.getReg() == Base)
+      BaseKill = false;
+  }
+
   SmallVector<std::pair<unsigned, bool>, 8> Regs;
   SmallVector<unsigned, 8> ImpDefs;
   SmallVector<MachineOperand *, 8> UsesOfImpDefs;