mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-10-20 09:24:58 +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,
|
void MarkVirtRegAliveInBlock(VarInfo& VRInfo, MachineBasicBlock* DefBlock,
|
||||||
MachineBasicBlock *BB,
|
MachineBasicBlock *BB,
|
||||||
std::vector<MachineBasicBlock*> &WorkList);
|
std::vector<MachineBasicBlock*> &WorkList);
|
||||||
|
void HandleVirtRegDef(unsigned reg, MachineInstr *MI);
|
||||||
void HandleVirtRegUse(unsigned reg, MachineBasicBlock *MBB,
|
void HandleVirtRegUse(unsigned reg, MachineBasicBlock *MBB,
|
||||||
MachineInstr *MI);
|
MachineInstr *MI);
|
||||||
};
|
};
|
||||||
|
@ -177,6 +177,14 @@ void LiveVariables::HandleVirtRegUse(unsigned reg, MachineBasicBlock *MBB,
|
|||||||
MarkVirtRegAliveInBlock(VRInfo, MRI->getVRegDef(reg)->getParent(), *PI);
|
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.
|
/// FindLastPartialDef - Return the last partial def of the specified register.
|
||||||
/// Also returns the sub-register that's defined.
|
/// Also returns the sub-register that's defined.
|
||||||
MachineInstr *LiveVariables::FindLastPartialDef(unsigned Reg,
|
MachineInstr *LiveVariables::FindLastPartialDef(unsigned Reg,
|
||||||
@ -552,8 +560,6 @@ bool LiveVariables::runOnMachineFunction(MachineFunction &mf) {
|
|||||||
const MachineOperand &MO = MI->getOperand(i);
|
const MachineOperand &MO = MI->getOperand(i);
|
||||||
if (MO.isRegister() && MO.getReg()) {
|
if (MO.isRegister() && MO.getReg()) {
|
||||||
unsigned MOReg = MO.getReg();
|
unsigned MOReg = MO.getReg();
|
||||||
if (!MOReg)
|
|
||||||
continue;
|
|
||||||
if (MO.isUse())
|
if (MO.isUse())
|
||||||
UseRegs.push_back(MOReg);
|
UseRegs.push_back(MOReg);
|
||||||
if (MO.isDef())
|
if (MO.isDef())
|
||||||
@ -566,24 +572,17 @@ bool LiveVariables::runOnMachineFunction(MachineFunction &mf) {
|
|||||||
unsigned MOReg = UseRegs[i];
|
unsigned MOReg = UseRegs[i];
|
||||||
if (TargetRegisterInfo::isVirtualRegister(MOReg))
|
if (TargetRegisterInfo::isVirtualRegister(MOReg))
|
||||||
HandleVirtRegUse(MOReg, MBB, MI);
|
HandleVirtRegUse(MOReg, MBB, MI);
|
||||||
else if (TargetRegisterInfo::isPhysicalRegister(MOReg) &&
|
else if (!ReservedRegisters[MOReg])
|
||||||
!ReservedRegisters[MOReg])
|
|
||||||
HandlePhysRegUse(MOReg, MI);
|
HandlePhysRegUse(MOReg, MI);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Process all defs.
|
// Process all defs.
|
||||||
for (unsigned i = 0, e = DefRegs.size(); i != e; ++i) {
|
for (unsigned i = 0, e = DefRegs.size(); i != e; ++i) {
|
||||||
unsigned MOReg = DefRegs[i];
|
unsigned MOReg = DefRegs[i];
|
||||||
if (TargetRegisterInfo::isVirtualRegister(MOReg)) {
|
if (TargetRegisterInfo::isVirtualRegister(MOReg))
|
||||||
VarInfo &VRInfo = getVarInfo(MOReg);
|
HandleVirtRegDef(MOReg, MI);
|
||||||
|
else if (!ReservedRegisters[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]) {
|
|
||||||
HandlePhysRegDef(MOReg, MI);
|
HandlePhysRegDef(MOReg, MI);
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user