mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-08-17 05:29:24 +00:00
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56412 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
4893c067b7
commit
3bdf5fe71a
@ -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);
|
||||
};
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user