Be more aggressive about renumbering vregs after splitting them.
authorOwen Anderson <resistor@mac.com>
Wed, 21 Jan 2009 00:13:28 +0000 (00:13 +0000)
committerOwen Anderson <resistor@mac.com>
Wed, 21 Jan 2009 00:13:28 +0000 (00:13 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62639 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/PreAllocSplitting.cpp
test/CodeGen/X86/pre-split2.ll

index 6b37637ee9599c83ab41fc1269e3d96decceef13..3c8257f1dac1065621fe325b57fd37210489889c 100644 (file)
@@ -1127,9 +1127,11 @@ bool PreAllocSplitting::Rematerialize(unsigned vreg, VNInfo* ValNo,
   LIs->InsertMachineInstrInMaps(prior(RestorePt), RestoreIdx);
   
   if (KillPt->getParent() == BarrierMBB) {
-    UpdateRegisterInterval(ValNo, LIs->getUseIndex(KillIdx)+1,
+    VNInfo* After = UpdateRegisterInterval(ValNo, LIs->getUseIndex(KillIdx)+1,
                            LIs->getDefIndex(RestoreIdx));
     
+    RenumberValno(After);
+
     ++NumSplits;
     ++NumRemats;
     return true;
@@ -1312,9 +1314,11 @@ bool PreAllocSplitting::SplitRegLiveInterval(LiveInterval *LI) {
     UpdateSpillSlotInterval(ValNo, LIs->getUseIndex(SpillIndex)+1,
                             LIs->getDefIndex(RestoreIndex));
 
-    UpdateRegisterInterval(ValNo, LIs->getUseIndex(SpillIndex)+1,
+    VNInfo* After = UpdateRegisterInterval(ValNo,
+                           LIs->getUseIndex(SpillIndex)+1,
                            LIs->getDefIndex(RestoreIndex));
-    
+    RenumberValno(After);
+   
     ++NumSplits;
     return true;
   }
index 1d69aa854424d292c35cc0a582e62e85ab8cfe9f..fcb3f05a8385422c73c344ee51b978230c25d2fe 100644 (file)
@@ -1,5 +1,5 @@
 ; RUN: llvm-as < %s | llc -march=x86 -mattr=+sse2 -pre-alloc-split -stats |& \
-; RUN:   grep {pre-alloc-split} | count 2
+; RUN:   grep {pre-alloc-split} | count 3
 
 define i32 @t() {
 entry: