Factor out code into HandleVirtRegDef, for consistency with
authorDan Gohman <gohman@apple.com>
Sun, 21 Sep 2008 21:11:41 +0000 (21:11 +0000)
committerDan Gohman <gohman@apple.com>
Sun, 21 Sep 2008 21:11:41 +0000 (21:11 +0000)
Handle{Virt,Phys}Reg{Def,Use}. Remove a redundant check
for register zero, and redundant checks for isPhysicalRegister.

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

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

index 18fa6f1f02b825dbb46a760158930286abec8d70..58f0cf86dde2db13b070a71b421a4ceec0aa810b 100644 (file)
@@ -263,6 +263,7 @@ public:
   void MarkVirtRegAliveInBlock(VarInfo& VRInfo, MachineBasicBlock* DefBlock,
                                MachineBasicBlock *BB,
                                std::vector<MachineBasicBlock*> &WorkList);
+  void HandleVirtRegDef(unsigned reg, MachineInstr *MI);
   void HandleVirtRegUse(unsigned reg, MachineBasicBlock *MBB,
                         MachineInstr *MI);
 };
index 00a5869cc17bd69ae0f8cd19fdf9876e38d996e1..7c4b77f41b0fcdc321f3ee781ddaf816d292bbc6 100644 (file)
@@ -177,6 +177,14 @@ void LiveVariables::HandleVirtRegUse(unsigned reg, MachineBasicBlock *MBB,
     MarkVirtRegAliveInBlock(VRInfo, MRI->getVRegDef(reg)->getParent(), *PI);
 }
 
+void LiveVariables::HandleVirtRegDef(unsigned Reg, MachineInstr *MI) {
+  VarInfo &VRInfo = getVarInfo(Reg);
+
+  if (VRInfo.AliveBlocks.none())
+    // If vr is not alive in any block, then defaults to dead.
+    VRInfo.Kills.push_back(MI);
+}
+
 /// FindLastPartialDef - Return the last partial def of the specified register.
 /// Also returns the sub-register that's defined.
 MachineInstr *LiveVariables::FindLastPartialDef(unsigned Reg,
@@ -552,8 +560,6 @@ bool LiveVariables::runOnMachineFunction(MachineFunction &mf) {
         const MachineOperand &MO = MI->getOperand(i);
         if (MO.isRegister() && MO.getReg()) {
           unsigned MOReg = MO.getReg();
-          if (!MOReg)
-            continue;
           if (MO.isUse())
             UseRegs.push_back(MOReg);
           if (MO.isDef())
@@ -566,24 +572,17 @@ bool LiveVariables::runOnMachineFunction(MachineFunction &mf) {
         unsigned MOReg = UseRegs[i];
         if (TargetRegisterInfo::isVirtualRegister(MOReg))
           HandleVirtRegUse(MOReg, MBB, MI);
-        else if (TargetRegisterInfo::isPhysicalRegister(MOReg) &&
-                 !ReservedRegisters[MOReg])
+        else if (!ReservedRegisters[MOReg])
           HandlePhysRegUse(MOReg, MI);
       }
 
       // Process all defs.
       for (unsigned i = 0, e = DefRegs.size(); i != e; ++i) {
         unsigned MOReg = DefRegs[i];
-        if (TargetRegisterInfo::isVirtualRegister(MOReg)) {
-          VarInfo &VRInfo = getVarInfo(MOReg);
-
-          if (VRInfo.AliveBlocks.none())
-            // If vr is not alive in any block, then defaults to dead.
-            VRInfo.Kills.push_back(MI);
-        } else if (TargetRegisterInfo::isPhysicalRegister(MOReg) &&
-                   !ReservedRegisters[MOReg]) {
+        if (TargetRegisterInfo::isVirtualRegister(MOReg))
+          HandleVirtRegDef(MOReg, MI);
+        else if (!ReservedRegisters[MOReg])
           HandlePhysRegDef(MOReg, MI);
-        }
       }
     }