[llvm-commits] CVS: llvm/lib/CodeGen/RegAllocSimple.cpp

Chris Lattner lattner at cs.uiuc.edu
Sun Dec 15 17:02:01 PST 2002


Changes in directory llvm/lib/CodeGen:

RegAllocSimple.cpp updated: 1.27 -> 1.28

---
Log message:

Some simpliciations to the spill/reload interface


---
Diffs of the changes:

Index: llvm/lib/CodeGen/RegAllocSimple.cpp
diff -u llvm/lib/CodeGen/RegAllocSimple.cpp:1.27 llvm/lib/CodeGen/RegAllocSimple.cpp:1.28
--- llvm/lib/CodeGen/RegAllocSimple.cpp:1.27	Sun Dec 15 16:39:53 2002
+++ llvm/lib/CodeGen/RegAllocSimple.cpp	Sun Dec 15 17:01:26 2002
@@ -126,14 +126,12 @@
     }
 
     /// Moves value from memory into that register
-    MachineBasicBlock::iterator
-    moveUseToReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator I,
-                 unsigned VirtReg, unsigned &PhysReg);
+    unsigned reloadVirtReg(MachineBasicBlock &MBB,
+                           MachineBasicBlock::iterator &I, unsigned VirtReg);
 
     /// Saves reg value on the stack (maps virtual register to stack value)
-    MachineBasicBlock::iterator
-    saveVirtRegToStack(MachineBasicBlock &MBB, MachineBasicBlock::iterator I,
-                       unsigned VirtReg, unsigned PhysReg);
+    void spillVirtReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator &I,
+                      unsigned VirtReg, unsigned PhysReg);
   };
 
 }
@@ -178,35 +176,31 @@
     return getFreeReg(virtualReg);
 }
 
-MachineBasicBlock::iterator
-RegAllocSimple::moveUseToReg (MachineBasicBlock &MBB,
-                              MachineBasicBlock::iterator I,
-                              unsigned VirtReg, unsigned &PhysReg)
-{
+unsigned RegAllocSimple::reloadVirtReg(MachineBasicBlock &MBB,
+                                       MachineBasicBlock::iterator &I,
+                                       unsigned VirtReg) {
   const TargetRegisterClass* regClass = MF->getRegClass(VirtReg);
   unsigned stackOffset = getStackSpaceFor(VirtReg, regClass);
-  PhysReg = getFreeReg(VirtReg);
+  unsigned PhysReg = getFreeReg(VirtReg);
 
   // Add move instruction(s)
   ++NumReloaded;
-  return RegInfo->loadRegOffset2Reg(MBB, I, PhysReg,
-                                    RegInfo->getFramePointer(),
-                                    -stackOffset, regClass->getDataSize());
+  I = RegInfo->loadRegOffset2Reg(MBB, I, PhysReg, RegInfo->getFramePointer(),
+                                 -stackOffset, regClass->getDataSize());
+  return PhysReg;
 }
 
-MachineBasicBlock::iterator
-RegAllocSimple::saveVirtRegToStack (MachineBasicBlock &MBB,
-                                    MachineBasicBlock::iterator I,
-                                    unsigned VirtReg, unsigned PhysReg)
+void RegAllocSimple::spillVirtReg(MachineBasicBlock &MBB,
+                                  MachineBasicBlock::iterator &I,
+                                  unsigned VirtReg, unsigned PhysReg)
 {
   const TargetRegisterClass* regClass = MF->getRegClass(VirtReg);
   unsigned stackOffset = getStackSpaceFor(VirtReg, regClass);
 
   // Add move instruction(s)
   ++NumSpilled;
-  return RegInfo->storeReg2RegOffset(MBB, I, PhysReg,
-                                     RegInfo->getFramePointer(),
-                                     -stackOffset, regClass->getDataSize());
+  I = RegInfo->storeReg2RegOffset(MBB, I, PhysReg, RegInfo->getFramePointer(),
+                                  -stackOffset, regClass->getDataSize());
 }
 
 
@@ -322,11 +316,13 @@
             } else {
               physReg = getFreeReg(virtualReg);
             }
-            I = --saveVirtRegToStack(MBB, ++I, virtualReg, physReg);
+            ++I;
+            spillVirtReg(MBB, I, virtualReg, physReg);
+            --I;
           } else {
-            I = moveUseToReg(MBB, I, virtualReg, physReg);
+            physReg = reloadVirtReg(MBB, I, virtualReg);
+            Virt2PhysRegMap[virtualReg] = physReg;
           }
-          Virt2PhysRegMap[virtualReg] = physReg;
         }
         MI->SetMachineOperandReg(i, physReg);
         DEBUG(std::cerr << "virt: " << virtualReg << 





More information about the llvm-commits mailing list