]> granicus.if.org Git - llvm/commitdiff
[BranchFolding] Unique added live-ins after hoisting code.
authorAhmed Bougacha <ahmed.bougacha@gmail.com>
Mon, 12 Sep 2016 16:05:31 +0000 (16:05 +0000)
committerAhmed Bougacha <ahmed.bougacha@gmail.com>
Mon, 12 Sep 2016 16:05:31 +0000 (16:05 +0000)
We're not supposed to have duplicate live-ins.

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

lib/CodeGen/BranchFolding.cpp
test/CodeGen/X86/tail-call-conditional.mir

index 06a82220875477bd0206adbd86d98f3cbe4aa2e3..0d4a0715a9e313f5c68fbc3154f1ab3e1be5c62b 100644 (file)
@@ -1972,14 +1972,21 @@ bool BranchFolder::HoistCommonCodeInSuccs(MachineBasicBlock *MBB) {
   FBB->erase(FBB->begin(), FIB);
 
   // Update livein's.
+  bool AddedLiveIns = false;
   for (unsigned i = 0, e = LocalDefs.size(); i != e; ++i) {
     unsigned Def = LocalDefs[i];
     if (LocalDefsSet.count(Def)) {
       TBB->addLiveIn(Def);
       FBB->addLiveIn(Def);
+      AddedLiveIns = true;
     }
   }
 
+  if (AddedLiveIns) {
+    TBB->sortUniqueLiveIns();
+    FBB->sortUniqueLiveIns();
+  }
+
   ++NumHoist;
   return true;
 }
index cf24eed96a75a679fd1c9938a4c19eeda4420c4c..3646076ccf83668ce8619d68801e2b663ada6046 100644 (file)
@@ -66,7 +66,7 @@ body:             |
     TCRETURNdi64 @f1, 0, csr_64, implicit %rsp, implicit %rdi, implicit %rsi
 
   ; CHECK: bb.2:
-  ; CHECK-NEXT: liveins: %rax, %rsi, %rdi, %rsi
+  ; CHECK-NEXT: liveins: %rax, %rdi, %rsi
   ; CHECK-NEXT: {{^  $}}
   ; CHECK-NEXT: TCRETURNdi64 @f2, 0, csr_64, implicit %rsp, implicit %rdi, implicit %rsi