Make LiveVariables::HandlePhysRegUse and
authorAlkis Evlogimenos <alkis@evlogimenos.com>
Sun, 11 Jan 2004 09:18:45 +0000 (09:18 +0000)
committerAlkis Evlogimenos <alkis@evlogimenos.com>
Sun, 11 Jan 2004 09:18:45 +0000 (09:18 +0000)
LiveVariables::HandlePhysRegDef private they use information that is
not in memory when LiveVariables finishes the analysis.

Also update the TwoAddressInstructionPass to not use this interface.

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

include/llvm/CodeGen/LiveVariables.h
lib/CodeGen/TwoAddressInstructionPass.cpp

index 50e4166f455927cdb514b81eaaa33d9d736e225b..71dd437d996ece61f35be6bdada037331e145eda 100644 (file)
@@ -109,6 +109,9 @@ private:   // Intermediate data structures
   MachineInstr **PhysRegInfo;
   bool          *PhysRegUsed;
 
+  void HandlePhysRegUse(unsigned Reg, MachineInstr *MI);
+  void HandlePhysRegDef(unsigned Reg, MachineInstr *MI);
+
 public:
 
   virtual bool runOnMachineFunction(MachineFunction &MF);
@@ -253,8 +256,6 @@ public:
   void MarkVirtRegAliveInBlock(VarInfo &VRInfo, const BasicBlock *BB);
   void HandleVirtRegUse(VarInfo &VRInfo, MachineBasicBlock *MBB,
                                MachineInstr *MI);
-  void HandlePhysRegUse(unsigned Reg, MachineInstr *MI);
-  void HandlePhysRegDef(unsigned Reg, MachineInstr *MI);
 };
 
 } // End llvm namespace
index 4d8db815b20e2705d0cd5afcec6852cf4d0e1876..2cb393ee4893aaa3b2e02e8894356f57a1e1cf31 100644 (file)
@@ -120,8 +120,10 @@ bool TwoAddressInstructionPass::runOnMachineFunction(MachineFunction &fn) {
             //     a = a op c
             unsigned regA = mi->getOperand(0).getAllocatedRegNum();
             unsigned regB = mi->getOperand(1).getAllocatedRegNum();
-            bool regAisPhysical = regA < MRegisterInfo::FirstVirtualRegister;
-            bool regBisPhysical = regB < MRegisterInfo::FirstVirtualRegister;
+
+            assert(regA >= MRegisterInfo::FirstVirtualRegister &&
+                   regB >= MRegisterInfo::FirstVirtualRegister &&
+                   "cannot update physical register live information");
 
             // first make sure we do not have a use of a in the
             // instruction (a = b + a for example) because our
@@ -132,10 +134,8 @@ bool TwoAddressInstructionPass::runOnMachineFunction(MachineFunction &fn) {
                        mi->getOperand(i).getAllocatedRegNum() != (int)regA);
             }
 
-            const TargetRegisterClass* rc = regAisPhysical ?
-                mri_->getRegClass(regA) :
+            const TargetRegisterClass* rc =
                 mf_->getSSARegMap()->getRegClass(regA);
-
             numInstrsAdded += mri_->copyRegToReg(*mbbi, mii, regA, regB, rc);
 
             MachineInstr* prevMi = *(mii - 1);
@@ -143,25 +143,15 @@ bool TwoAddressInstructionPass::runOnMachineFunction(MachineFunction &fn) {
                   prevMi->print(std::cerr, *tm_));
 
             // update live variables for regA
-            if (regAisPhysical) {
-                lv_->HandlePhysRegDef(regA, prevMi);
-            }
-            else {
-                LiveVariables::VarInfo& varInfo = lv_->getVarInfo(regA);
-                varInfo.DefInst = prevMi;
-            }
+            LiveVariables::VarInfo& varInfo = lv_->getVarInfo(regA);
+            varInfo.DefInst = prevMi;
 
             // update live variables for regB
-            if (regBisPhysical) {
-                lv_->HandlePhysRegUse(regB, prevMi);
-            }
-            else {
-                if (lv_->removeVirtualRegisterKilled(regB, &*mbbi, mi))
-                    lv_->addVirtualRegisterKilled(regB, &*mbbi, prevMi);
+            if (lv_->removeVirtualRegisterKilled(regB, &*mbbi, mi))
+                lv_->addVirtualRegisterKilled(regB, &*mbbi, prevMi);
 
-                if (lv_->removeVirtualRegisterDead(regB, &*mbbi, mi))
-                    lv_->addVirtualRegisterDead(regB, &*mbbi, prevMi);
-            }
+            if (lv_->removeVirtualRegisterDead(regB, &*mbbi, mi))
+                lv_->addVirtualRegisterDead(regB, &*mbbi, prevMi);
 
             // replace all occurences of regB with regA
             for (unsigned i = 1; i < mi->getNumOperands(); ++i) {