diff options
author | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2018-09-18 16:10:51 +0000 |
---|---|---|
committer | Krzysztof Parzyszek <kparzysz@codeaurora.org> | 2018-09-18 16:10:51 +0000 |
commit | c1e2f39b3503869bd471a867c177f6486da5fee0 (patch) | |
tree | 3939b44dcee52ee3c8721010db573cc95ce26b85 /llvm/lib | |
parent | 0594162f3238602bc6ae57bc876d27257411df01 (diff) | |
download | bcm5719-llvm-c1e2f39b3503869bd471a867c177f6486da5fee0.tar.gz bcm5719-llvm-c1e2f39b3503869bd471a867c177f6486da5fee0.zip |
[PostRASink] Make sure to remove subregisters from live-ins as well
llvm-svn: 342492
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/CodeGen/MachineSink.cpp | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/MachineSink.cpp b/llvm/lib/CodeGen/MachineSink.cpp index d52e6198d4e..1d2e85accbc 100644 --- a/llvm/lib/CodeGen/MachineSink.cpp +++ b/llvm/lib/CodeGen/MachineSink.cpp @@ -1037,8 +1037,11 @@ static void clearKillFlags(MachineInstr *MI, MachineBasicBlock &CurBB, static void updateLiveIn(MachineInstr *MI, MachineBasicBlock *SuccBB, SmallVectorImpl<unsigned> &UsedOpsInCopy, SmallVectorImpl<unsigned> &DefedRegsInCopy) { - for (auto DefReg : DefedRegsInCopy) - SuccBB->removeLiveIn(DefReg); + MachineFunction &MF = *SuccBB->getParent(); + const TargetRegisterInfo *TRI = MF.getSubtarget().getRegisterInfo(); + for (unsigned DefReg : DefedRegsInCopy) + for (MCSubRegIterator S(DefReg, TRI, true); S.isValid(); ++S) + SuccBB->removeLiveIn(*S); for (auto U : UsedOpsInCopy) { unsigned Reg = MI->getOperand(U).getReg(); if (!SuccBB->isLiveIn(Reg)) |