1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 11:02:59 +02:00

Simplify the interface to LiveVariables::addVirtualRegister(Killed|Dead)

llvm-svn: 14997
This commit is contained in:
Chris Lattner 2004-07-19 06:55:21 +00:00
parent 53fa752649
commit 6c34920110
5 changed files with 14 additions and 17 deletions

View File

@ -151,11 +151,9 @@ public:
/// specified register is killed after being used by the specified /// specified register is killed after being used by the specified
/// instruction. /// instruction.
/// ///
void addVirtualRegisterKilled(unsigned IncomingReg, void addVirtualRegisterKilled(unsigned IncomingReg, MachineInstr *MI) {
MachineBasicBlock *MBB,
MachineInstr *MI) {
RegistersKilled.insert(std::make_pair(MI, IncomingReg)); RegistersKilled.insert(std::make_pair(MI, IncomingReg));
getVarInfo(IncomingReg).Kills.push_back(std::make_pair(MBB, MI)); getVarInfo(IncomingReg).Kills.push_back(std::make_pair(MI->getParent(),MI));
} }
/// removeVirtualRegisterKilled - Remove the specified virtual /// removeVirtualRegisterKilled - Remove the specified virtual
@ -189,11 +187,9 @@ public:
/// addVirtualRegisterDead - Add information about the fact that the specified /// addVirtualRegisterDead - Add information about the fact that the specified
/// register is dead after being used by the specified instruction. /// register is dead after being used by the specified instruction.
/// ///
void addVirtualRegisterDead(unsigned IncomingReg, void addVirtualRegisterDead(unsigned IncomingReg, MachineInstr *MI) {
MachineBasicBlock *MBB,
MachineInstr *MI) {
RegistersDead.insert(std::make_pair(MI, IncomingReg)); RegistersDead.insert(std::make_pair(MI, IncomingReg));
getVarInfo(IncomingReg).Kills.push_back(std::make_pair(MBB, MI)); getVarInfo(IncomingReg).Kills.push_back(std::make_pair(MI->getParent(),MI));
} }
/// removeVirtualRegisterDead - Remove the specified virtual /// removeVirtualRegisterDead - Remove the specified virtual

View File

@ -263,7 +263,7 @@ std::vector<LiveInterval*> LiveIntervals::addIntervalsForSpills(
nI.addRange(start, end); nI.addRange(start, end);
added.push_back(&nI); added.push_back(&nI);
// update live variables // update live variables
lv_->addVirtualRegisterKilled(nReg, mi->getParent(),mi); lv_->addVirtualRegisterKilled(nReg, mi);
DEBUG(std::cerr << "\t\t\t\tadded new interval: " DEBUG(std::cerr << "\t\t\t\tadded new interval: "
<< nI << '\n'); << nI << '\n');
} }

View File

@ -99,7 +99,7 @@ void LiveVariables::HandleVirtRegUse(VarInfo &VRInfo, MachineBasicBlock *MBB,
"Should have kill for defblock!"); "Should have kill for defblock!");
// Add a new kill entry for this basic block. // Add a new kill entry for this basic block.
VRInfo.Kills.push_back(std::make_pair(MBB, MI)); VRInfo.Kills.push_back(std::make_pair(MI->getParent(), MI));
// Update all dominating blocks to mark them known live. // Update all dominating blocks to mark them known live.
const BasicBlock *BB = MBB->getBasicBlock(); const BasicBlock *BB = MBB->getBasicBlock();
@ -233,7 +233,8 @@ bool LiveVariables::runOnMachineFunction(MachineFunction &MF) {
assert(VRInfo.DefInst == 0 && "Variable multiply defined!"); assert(VRInfo.DefInst == 0 && "Variable multiply defined!");
VRInfo.DefInst = MI; VRInfo.DefInst = MI;
VRInfo.Kills.push_back(std::make_pair(MBB, MI)); // Defaults to dead // Defaults to dead
VRInfo.Kills.push_back(std::make_pair(MI->getParent(), MI));
} else if (MRegisterInfo::isPhysicalRegister(MO.getReg()) && } else if (MRegisterInfo::isPhysicalRegister(MO.getReg()) &&
AllocatablePhysicalRegisters[MO.getReg()]) { AllocatablePhysicalRegisters[MO.getReg()]) {
HandlePhysRegDef(MO.getReg(), MI); HandlePhysRegDef(MO.getReg(), MI);

View File

@ -122,7 +122,7 @@ bool PNE::EliminatePHINodes(MachineFunction &MF, MachineBasicBlock &MBB) {
// each for each incoming block), the "def" block and instruction fields // each for each incoming block), the "def" block and instruction fields
// for the VarInfo is not filled in. // for the VarInfo is not filled in.
// //
LV->addVirtualRegisterKilled(IncomingReg, &MBB, PHICopy); LV->addVirtualRegisterKilled(IncomingReg, PHICopy);
// Since we are going to be deleting the PHI node, if it is the last use // Since we are going to be deleting the PHI node, if it is the last use
// of any registers, or if the value itself is dead, we need to move this // of any registers, or if the value itself is dead, we need to move this
@ -140,7 +140,7 @@ bool PNE::EliminatePHINodes(MachineFunction &MF, MachineBasicBlock &MBB) {
// Add all of the kills back, which will update the appropriate info... // Add all of the kills back, which will update the appropriate info...
for (unsigned i = 0, e = Range.size(); i != e; ++i) for (unsigned i = 0, e = Range.size(); i != e; ++i)
LV->addVirtualRegisterKilled(Range[i].second, &MBB, PHICopy); LV->addVirtualRegisterKilled(Range[i].second, PHICopy);
} }
RKs = LV->dead_range(MI); RKs = LV->dead_range(MI);
@ -149,7 +149,7 @@ bool PNE::EliminatePHINodes(MachineFunction &MF, MachineBasicBlock &MBB) {
Range.assign(RKs.first, RKs.second); Range.assign(RKs.first, RKs.second);
LV->removeVirtualRegistersDead(RKs.first, RKs.second); LV->removeVirtualRegistersDead(RKs.first, RKs.second);
for (unsigned i = 0, e = Range.size(); i != e; ++i) for (unsigned i = 0, e = Range.size(); i != e; ++i)
LV->addVirtualRegisterDead(Range[i].second, &MBB, PHICopy); LV->addVirtualRegisterDead(Range[i].second, PHICopy);
} }
} }
@ -251,7 +251,7 @@ bool PNE::EliminatePHINodes(MachineFunction &MF, MachineBasicBlock &MBB) {
// //
if (!ValueIsLive) { if (!ValueIsLive) {
MachineBasicBlock::iterator Prev = prior(I); MachineBasicBlock::iterator Prev = prior(I);
LV->addVirtualRegisterKilled(SrcReg, &opBlock, Prev); LV->addVirtualRegisterKilled(SrcReg, Prev);
} }
} }
} }

View File

@ -151,10 +151,10 @@ bool TwoAddressInstructionPass::runOnMachineFunction(MachineFunction &MF) {
// update live variables for regB // update live variables for regB
if (LV->removeVirtualRegisterKilled(regB, &*mbbi, mi)) if (LV->removeVirtualRegisterKilled(regB, &*mbbi, mi))
LV->addVirtualRegisterKilled(regB, &*mbbi, prevMi); LV->addVirtualRegisterKilled(regB, prevMi);
if (LV->removeVirtualRegisterDead(regB, &*mbbi, mi)) if (LV->removeVirtualRegisterDead(regB, &*mbbi, mi))
LV->addVirtualRegisterDead(regB, &*mbbi, prevMi); LV->addVirtualRegisterDead(regB, prevMi);
} }
// replace all occurences of regB with regA // replace all occurences of regB with regA