Don't bother calculating info unless its needed. May reduce number of stack slots...
authorChris Lattner <sabre@nondot.org>
Mon, 4 Aug 2003 23:42:37 +0000 (23:42 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 4 Aug 2003 23:42:37 +0000 (23:42 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@7584 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/RegAllocLocal.cpp

index 57f3c836e5513a182c4d5f92c97d3233c0f8edbe..f6eacda9c45be9ee7f9f68b15c8ac8654f8b0d91 100644 (file)
@@ -238,10 +238,6 @@ void RA::spillVirtReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator &I,
     DEBUG(std::cerr << " which corresponds to no vreg, "
                     << "must be spurious physreg: ignoring (WARNING)\n");
   } else {
-    // FIXME: move this into the conditional??
-    const TargetRegisterClass *RC = MF->getSSARegMap()->getRegClass(VirtReg);
-    int FrameIndex = getStackSpaceFor(VirtReg, RC);
-
     DEBUG(std::cerr << " containing %reg" << VirtReg;
           if (!isVirtRegModified(VirtReg))
            std::cerr << " which has not been modified, so no store necessary!");
@@ -250,6 +246,8 @@ void RA::spillVirtReg(MachineBasicBlock &MBB, MachineBasicBlock::iterator &I,
     // register.  We only need to spill it into its stack slot if it has been
     // modified.
     if (isVirtRegModified(VirtReg)) {
+      const TargetRegisterClass *RC = MF->getSSARegMap()->getRegClass(VirtReg);
+      int FrameIndex = getStackSpaceFor(VirtReg, RC);
       DEBUG(std::cerr << " to stack slot #" << FrameIndex);
       RegInfo->storeRegToStackSlot(MBB, I, PhysReg, FrameIndex, RC);
       ++NumSpilled;   // Update statistics