From ae9d9f4d3f408f2b366381d8e2fd7d471fb76822 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Sun, 21 Sep 2008 21:11:41 +0000 Subject: [PATCH] Factor out code into HandleVirtRegDef, for consistency with Handle{Virt,Phys}Reg{Def,Use}. Remove a redundant check for register zero, and redundant checks for isPhysicalRegister. llvm-svn: 56412 --- llvm/include/llvm/CodeGen/LiveVariables.h | 1 + llvm/lib/CodeGen/LiveVariables.cpp | 25 +++++++++++------------ 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/llvm/include/llvm/CodeGen/LiveVariables.h b/llvm/include/llvm/CodeGen/LiveVariables.h index 18fa6f1f02b8..58f0cf86dde2 100644 --- a/llvm/include/llvm/CodeGen/LiveVariables.h +++ b/llvm/include/llvm/CodeGen/LiveVariables.h @@ -263,6 +263,7 @@ public: void MarkVirtRegAliveInBlock(VarInfo& VRInfo, MachineBasicBlock* DefBlock, MachineBasicBlock *BB, std::vector &WorkList); + void HandleVirtRegDef(unsigned reg, MachineInstr *MI); void HandleVirtRegUse(unsigned reg, MachineBasicBlock *MBB, MachineInstr *MI); }; diff --git a/llvm/lib/CodeGen/LiveVariables.cpp b/llvm/lib/CodeGen/LiveVariables.cpp index 00a5869cc17b..7c4b77f41b0f 100644 --- a/llvm/lib/CodeGen/LiveVariables.cpp +++ b/llvm/lib/CodeGen/LiveVariables.cpp @@ -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); - } } }