diff options
author | Mark Lacey <mark.lacey@apple.com> | 2013-08-14 23:50:09 +0000 |
---|---|---|
committer | Mark Lacey <mark.lacey@apple.com> | 2013-08-14 23:50:09 +0000 |
commit | f367cd9239fd5376c63d9dad63eadf1fa956b53b (patch) | |
tree | 15f4fa5cb2c507d0e773d82985c16ff2e55c4a36 /llvm/lib/CodeGen/LiveRangeEdit.cpp | |
parent | f9ea88546fc1e0ce85de0fe7af899c27d461bcae (diff) | |
download | bcm5719-llvm-f367cd9239fd5376c63d9dad63eadf1fa956b53b.tar.gz bcm5719-llvm-f367cd9239fd5376c63d9dad63eadf1fa956b53b.zip |
Notify LiveRangeEdit of new virtual registers.
Add a delegate class to MachineRegisterInfo with a single virtual
function, MRI_NoteNewVirtualRegister(). Update LiveRangeEdit to inherit
from this delegate class and override the definition of the callback
with an implementation that tracks the newly created virtual registers.
llvm-svn: 188435
Diffstat (limited to 'llvm/lib/CodeGen/LiveRangeEdit.cpp')
-rw-r--r-- | llvm/lib/CodeGen/LiveRangeEdit.cpp | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/LiveRangeEdit.cpp b/llvm/lib/CodeGen/LiveRangeEdit.cpp index 4e6c4c705d4..04f92adefd1 100644 --- a/llvm/lib/CodeGen/LiveRangeEdit.cpp +++ b/llvm/lib/CodeGen/LiveRangeEdit.cpp @@ -33,11 +33,9 @@ void LiveRangeEdit::Delegate::anchor() { } LiveInterval &LiveRangeEdit::createFrom(unsigned OldReg) { unsigned VReg = MRI.createVirtualRegister(MRI.getRegClass(OldReg)); if (VRM) { - VRM->grow(); VRM->setIsSplitFromReg(VReg, VRM->getOriginal(OldReg)); } LiveInterval &LI = LIS.getOrCreateInterval(VReg); - NewRegs.push_back(VReg); return LI; } @@ -387,6 +385,17 @@ void LiveRangeEdit::eliminateDeadDefs(SmallVectorImpl<MachineInstr*> &Dead, } } +// Keep track of new virtual registers created via +// MachineRegisterInfo::createVirtualRegister. +void +LiveRangeEdit::MRI_NoteNewVirtualRegister(unsigned VReg) +{ + if (VRM) + VRM->grow(); + + NewRegs.push_back(VReg); +} + void LiveRangeEdit::calculateRegClassAndHint(MachineFunction &MF, const MachineLoopInfo &Loops, |