From adf5e0d91d10ebd45993b837e7f1eae54223a0d2 Mon Sep 17 00:00:00 2001 From: Mikael Holmen Date: Tue, 25 Sep 2018 06:10:04 +0000 Subject: [PATCH] Use TRI->regsOverlap() in MachineBasicBlock::computeRegisterLiveness Summary: For the loop that used MCRegAliasIterator this should be NFC. For the loop that previously used MCSubRegIterator we should now detect more cases where the register is actually live out that we previously missed. Reviewers: MatzeB, arsenm Reviewed By: MatzeB Subscribers: wdng, llvm-commits Differential Revision: https://reviews.llvm.org/D52410 llvm-svn: 342944 --- llvm/lib/CodeGen/MachineBasicBlock.cpp | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/llvm/lib/CodeGen/MachineBasicBlock.cpp b/llvm/lib/CodeGen/MachineBasicBlock.cpp index 49181e3..6a242d8 100644 --- a/llvm/lib/CodeGen/MachineBasicBlock.cpp +++ b/llvm/lib/CodeGen/MachineBasicBlock.cpp @@ -1404,9 +1404,8 @@ MachineBasicBlock::computeRegisterLiveness(const TargetRegisterInfo *TRI, // no successor has it live in. if (I == end()) { for (MachineBasicBlock *S : successors()) { - for (MCSubRegIterator SubReg(Reg, TRI, /*IncludeSelf*/true); - SubReg.isValid(); ++SubReg) { - if (S->isLiveIn(*SubReg)) + for (const MachineBasicBlock::RegisterMaskPair &LI : S->liveins()) { + if (TRI->regsOverlap(LI.PhysReg, Reg)) return LQR_Live; } } @@ -1460,9 +1459,8 @@ MachineBasicBlock::computeRegisterLiveness(const TargetRegisterInfo *TRI, // Did we get to the start of the block? if (I == begin()) { // If so, the register's state is definitely defined by the live-in state. - for (MCRegAliasIterator RAI(Reg, TRI, /*IncludeSelf=*/true); RAI.isValid(); - ++RAI) - if (isLiveIn(*RAI)) + for (const MachineBasicBlock::RegisterMaskPair &LI : liveins()) + if (TRI->regsOverlap(LI.PhysReg, Reg)) return LQR_Live; return LQR_Dead; -- 2.7.4