Changes in directory llvm/lib/CodeGen:

RegAllocLocal.cpp updated: 1.92 -> 1.93
---
Log message:

Fix UnitTests/2005-05-12-Int64ToFP.c with llc-beta.  In particular, do not
allow it to go into an infinite loop, filling up the disk!


---
Diffs of the changes:  (+10 -7)

 RegAllocLocal.cpp |   17 ++++++++++-------
 1 files changed, 10 insertions(+), 7 deletions(-)


Index: llvm/lib/CodeGen/RegAllocLocal.cpp
diff -u llvm/lib/CodeGen/RegAllocLocal.cpp:1.92 
llvm/lib/CodeGen/RegAllocLocal.cpp:1.93
--- llvm/lib/CodeGen/RegAllocLocal.cpp:1.92     Fri Sep  8 15:21:31 2006
+++ llvm/lib/CodeGen/RegAllocLocal.cpp  Tue Sep 19 13:02:01 2006
@@ -621,18 +621,21 @@
       for (const unsigned *ImplicitDefs = TID.ImplicitDefs;
            *ImplicitDefs; ++ImplicitDefs) {
         unsigned Reg = *ImplicitDefs;
-        if (PhysRegsUsed[Reg] == -2) continue;
-
-        spillPhysReg(MBB, MI, Reg, true);
-        PhysRegsUseOrder.push_back(Reg);
-        PhysRegsUsed[Reg] = 0;            // It is free and reserved now
+        bool IsNonAllocatable = PhysRegsUsed[Reg] == -2;
+        if (!IsNonAllocatable) {
+          spillPhysReg(MBB, MI, Reg, true);
+          PhysRegsUseOrder.push_back(Reg);
+          PhysRegsUsed[Reg] = 0;            // It is free and reserved now
+        }
         PhysRegsEverUsed[Reg] = true;
 
         for (const unsigned *AliasSet = RegInfo->getAliasSet(Reg);
              *AliasSet; ++AliasSet) {
           if (PhysRegsUsed[*AliasSet] != -2) {
-            PhysRegsUseOrder.push_back(*AliasSet);
-            PhysRegsUsed[*AliasSet] = 0;  // It is free and reserved now
+            if (!IsNonAllocatable) {
+              PhysRegsUseOrder.push_back(*AliasSet);
+              PhysRegsUsed[*AliasSet] = 0;  // It is free and reserved now
+            }
             PhysRegsEverUsed[*AliasSet] = true;
           }
         }



_______________________________________________
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits

Reply via email to