diff options
author | Dan Gohman <gohman@apple.com> | 2009-04-15 01:19:35 +0000 |
---|---|---|
committer | Dan Gohman <gohman@apple.com> | 2009-04-15 01:19:35 +0000 |
commit | 33f1c68cba4e905fdd2bf7d2848c52052d46fbff (patch) | |
tree | 5fb0e0a7c2b45ebe07029f03f74a6bd3ff22bc2e /lib/CodeGen/MachineRegisterInfo.cpp | |
parent | 593ea05957b98472a916278d64229ceda223c50b (diff) | |
download | llvm-33f1c68cba4e905fdd2bf7d2848c52052d46fbff.tar.gz llvm-33f1c68cba4e905fdd2bf7d2848c52052d46fbff.tar.bz2 llvm-33f1c68cba4e905fdd2bf7d2848c52052d46fbff.tar.xz |
Move MachineRegisterInfo::setRegClass out of line.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@69126 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/MachineRegisterInfo.cpp')
-rw-r--r-- | lib/CodeGen/MachineRegisterInfo.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/lib/CodeGen/MachineRegisterInfo.cpp b/lib/CodeGen/MachineRegisterInfo.cpp index e5148e74be..4f5ab1f586 100644 --- a/lib/CodeGen/MachineRegisterInfo.cpp +++ b/lib/CodeGen/MachineRegisterInfo.cpp @@ -35,6 +35,26 @@ MachineRegisterInfo::~MachineRegisterInfo() { delete [] PhysRegUseDefLists; } +/// setRegClass - Set the register class of the specified virtual register. +/// +void +MachineRegisterInfo::setRegClass(unsigned Reg, const TargetRegisterClass *RC) { + unsigned VR = Reg; + Reg -= TargetRegisterInfo::FirstVirtualRegister; + assert(Reg < VRegInfo.size() && "Invalid vreg!"); + const TargetRegisterClass *OldRC = VRegInfo[Reg].first; + VRegInfo[Reg].first = RC; + + // Remove from old register class's vregs list. This may be slow but + // fortunately this operation is rarely needed. + std::vector<unsigned> &VRegs = RegClass2VRegMap[OldRC->getID()]; + std::vector<unsigned>::iterator I=std::find(VRegs.begin(), VRegs.end(), VR); + VRegs.erase(I); + + // Add to new register class's vregs list. + RegClass2VRegMap[RC->getID()].push_back(VR); +} + /// createVirtualRegister - Create and return a new virtual register in the /// function with the specified register class. /// |