diff options
author | Chris Lattner <sabre@nondot.org> | 2006-09-03 00:05:09 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2006-09-03 00:05:09 +0000 |
commit | 7a3abdc63c0cc4e5d5411c3add0e909c6ac49e79 (patch) | |
tree | 93b48c134d85b6e24eac7fa608355724ed424b74 | |
parent | 1c57be4a405bf6fbad93a0e3b28c5dbd0276a0dd (diff) | |
download | external_llvm-7a3abdc63c0cc4e5d5411c3add0e909c6ac49e79.zip external_llvm-7a3abdc63c0cc4e5d5411c3add0e909c6ac49e79.tar.gz external_llvm-7a3abdc63c0cc4e5d5411c3add0e909c6ac49e79.tar.bz2 |
Move two methods out of line, make them work when the record for a machine
instruction includes physregs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30061 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/llvm/CodeGen/LiveVariables.h | 34 | ||||
-rw-r--r-- | lib/CodeGen/LiveVariables.cpp | 36 |
2 files changed, 42 insertions, 28 deletions
diff --git a/include/llvm/CodeGen/LiveVariables.h b/include/llvm/CodeGen/LiveVariables.h index a0f8c01..a61eca8 100644 --- a/include/llvm/CodeGen/LiveVariables.h +++ b/include/llvm/CodeGen/LiveVariables.h @@ -242,19 +242,8 @@ public: /// removeVirtualRegistersKilled - Remove all killed info for the specified /// instruction. - void removeVirtualRegistersKilled(MachineInstr *MI) { - std::map<MachineInstr*, std::vector<unsigned> >::iterator I = - RegistersKilled.find(MI); - if (I != RegistersKilled.end()) { - std::vector<unsigned> &Regs = I->second; - for (unsigned i = 0, e = Regs.size(); i != e; ++i) { - bool removed = getVarInfo(Regs[i]).removeKill(MI); - assert(removed && "kill not in register's VarInfo?"); - } - RegistersKilled.erase(I); - } - } - + void removeVirtualRegistersKilled(MachineInstr *MI); + /// addVirtualRegisterDead - Add information about the fact that the specified /// register is dead after being used by the specified instruction. /// @@ -292,21 +281,10 @@ public: return true; } - /// removeVirtualRegistersDead - Remove all of the specified dead - /// registers from the live variable information. - void removeVirtualRegistersDead(MachineInstr *MI) { - std::map<MachineInstr*, std::vector<unsigned> >::iterator I = - RegistersDead.find(MI); - if (I != RegistersDead.end()) { - std::vector<unsigned> &Regs = I->second; - for (unsigned i = 0, e = Regs.size(); i != e; ++i) { - bool removed = getVarInfo(Regs[i]).removeKill(MI); - assert(removed && "kill not in register's VarInfo?"); - } - RegistersDead.erase(I); - } - } - + /// removeVirtualRegistersDead - Remove all of the dead registers for the + /// specified instruction from the live variable information. + void removeVirtualRegistersDead(MachineInstr *MI); + virtual void getAnalysisUsage(AnalysisUsage &AU) const { AU.setPreservesAll(); } diff --git a/lib/CodeGen/LiveVariables.cpp b/lib/CodeGen/LiveVariables.cpp index 4f203e9..4e5c96e 100644 --- a/lib/CodeGen/LiveVariables.cpp +++ b/lib/CodeGen/LiveVariables.cpp @@ -415,3 +415,39 @@ void LiveVariables::instructionChanged(MachineInstr *OldMI, RegistersDead.erase(OldMI); } } + +/// removeVirtualRegistersKilled - Remove all killed info for the specified +/// instruction. +void LiveVariables::removeVirtualRegistersKilled(MachineInstr *MI) { + std::map<MachineInstr*, std::vector<unsigned> >::iterator I = + RegistersKilled.find(MI); + if (I == RegistersKilled.end()) return; + + std::vector<unsigned> &Regs = I->second; + for (unsigned i = 0, e = Regs.size(); i != e; ++i) { + if (MRegisterInfo::isVirtualRegister(Regs[i])) { + bool removed = getVarInfo(Regs[i]).removeKill(MI); + assert(removed && "kill not in register's VarInfo?"); + } + } + RegistersKilled.erase(I); +} + +/// removeVirtualRegistersDead - Remove all of the dead registers for the +/// specified instruction from the live variable information. +void LiveVariables::removeVirtualRegistersDead(MachineInstr *MI) { + std::map<MachineInstr*, std::vector<unsigned> >::iterator I = + RegistersDead.find(MI); + if (I == RegistersDead.end()) return; + + std::vector<unsigned> &Regs = I->second; + for (unsigned i = 0, e = Regs.size(); i != e; ++i) { + if (MRegisterInfo::isVirtualRegister(Regs[i])) { + bool removed = getVarInfo(Regs[i]).removeKill(MI); + assert(removed && "kill not in register's VarInfo?"); + } + } + RegistersDead.erase(I); +} + + |