]> granicus.if.org Git - llvm/commitdiff
[AArch64] Add early exit to promoteLoadFromStore.
authorFlorian Hahn <florian.hahn@arm.com>
Wed, 21 Jun 2017 09:51:52 +0000 (09:51 +0000)
committerFlorian Hahn <florian.hahn@arm.com>
Wed, 21 Jun 2017 09:51:52 +0000 (09:51 +0000)
There should be at most a single kill flag for the
promoted operand between the store/load pair.
Discussed in https://reviews.llvm.org/D34402.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@305889 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/AArch64/AArch64LoadStoreOptimizer.cpp

index c35de77727e57526d102e3eea9a6dd1dbb0c1392..c45c0b4c8ed7ba3142ad073e82cf20d189861f5d 100644 (file)
@@ -877,7 +877,10 @@ AArch64LoadStoreOpt::promoteLoadFromStore(MachineBasicBlock::iterator LoadI,
   // Clear kill flags between store and load.
   for (MachineInstr &MI : make_range(StoreI->getIterator(),
                                      BitExtMI->getIterator()))
-    MI.clearRegisterKills(StRt, TRI);
+    if (MI.killsRegister(StRt, TRI)) {
+      MI.clearRegisterKills(StRt, TRI);
+      break;
+    }
 
   DEBUG(dbgs() << "Promoting load by replacing :\n    ");
   DEBUG(StoreI->print(dbgs()));