197197#include " llvm/ADT/SmallVector.h"
198198#include " llvm/ADT/Statistic.h"
199199#include " llvm/CodeGen/LivePhysRegs.h"
200+ #include " llvm/CodeGen/LiveRegUnits.h"
200201#include " llvm/CodeGen/MachineBasicBlock.h"
201202#include " llvm/CodeGen/MachineFrameInfo.h"
202203#include " llvm/CodeGen/MachineFunction.h"
@@ -988,7 +989,7 @@ void AArch64FrameLowering::emitZeroCallUsedRegs(BitVector RegsToZero,
988989 }
989990}
990991
991- static void getLiveRegsForEntryMBB (LivePhysRegs &LiveRegs,
992+ static void getLiveRegsForEntryMBB (LiveRegUnits &LiveRegs,
992993 const MachineBasicBlock &MBB) {
993994 const MachineFunction *MF = MBB.getParent ();
994995 LiveRegs.addLiveIns (MBB);
@@ -1018,16 +1019,15 @@ static Register findScratchNonCalleeSaveRegister(MachineBasicBlock *MBB) {
10181019
10191020 const AArch64Subtarget &Subtarget = MF->getSubtarget <AArch64Subtarget>();
10201021 const AArch64RegisterInfo &TRI = *Subtarget.getRegisterInfo ();
1021- LivePhysRegs LiveRegs (TRI);
1022+ LiveRegUnits LiveRegs (TRI);
10221023 getLiveRegsForEntryMBB (LiveRegs, *MBB);
10231024
10241025 // Prefer X9 since it was historically used for the prologue scratch reg.
1025- const MachineRegisterInfo &MRI = MF->getRegInfo ();
1026- if (LiveRegs.available (MRI, AArch64::X9))
1026+ if (LiveRegs.available (AArch64::X9))
10271027 return AArch64::X9;
10281028
1029- for (unsigned Reg : AArch64::GPR64RegClass) {
1030- if (LiveRegs.available (MRI, Reg))
1029+ for (Register Reg : AArch64::GPR64RegClass) {
1030+ if (LiveRegs.available (Reg))
10311031 return Reg;
10321032 }
10331033 return AArch64::NoRegister;
@@ -1044,13 +1044,11 @@ bool AArch64FrameLowering::canUseAsPrologue(
10441044
10451045 if (AFI->hasSwiftAsyncContext ()) {
10461046 const AArch64RegisterInfo &TRI = *Subtarget.getRegisterInfo ();
1047- const MachineRegisterInfo &MRI = MF->getRegInfo ();
1048- LivePhysRegs LiveRegs (TRI);
1047+ LiveRegUnits LiveRegs (TRI);
10491048 getLiveRegsForEntryMBB (LiveRegs, MBB);
10501049 // The StoreSwiftAsyncContext clobbers X16 and X17. Make sure they are
10511050 // available.
1052- if (!LiveRegs.available (MRI, AArch64::X16) ||
1053- !LiveRegs.available (MRI, AArch64::X17))
1051+ if (!LiveRegs.available (AArch64::X16) || !LiveRegs.available (AArch64::X17))
10541052 return false ;
10551053 }
10561054
@@ -1603,7 +1601,7 @@ static void emitDefineCFAWithFP(MachineFunction &MF, MachineBasicBlock &MBB,
16031601// / Collect live registers from the end of \p MI's parent up to (including) \p
16041602// / MI in \p LiveRegs.
16051603static void getLivePhysRegsUpTo (MachineInstr &MI, const TargetRegisterInfo &TRI,
1606- LivePhysRegs &LiveRegs) {
1604+ LiveRegUnits &LiveRegs) {
16071605
16081606 MachineBasicBlock &MBB = *MI.getParent ();
16091607 LiveRegs.addLiveOuts (MBB);
@@ -1641,7 +1639,7 @@ void AArch64FrameLowering::emitPrologue(MachineFunction &MF,
16411639 NonFrameStart->getFlag (MachineInstr::FrameSetup))
16421640 ++NonFrameStart;
16431641
1644- LivePhysRegs LiveRegs (*TRI);
1642+ LiveRegUnits LiveRegs (*TRI);
16451643 if (NonFrameStart != MBB.end ()) {
16461644 getLivePhysRegsUpTo (*NonFrameStart, *TRI, LiveRegs);
16471645 // Ignore registers used for stack management for now.
@@ -1659,7 +1657,7 @@ void AArch64FrameLowering::emitPrologue(MachineFunction &MF,
16591657 make_range (MBB.instr_begin (), NonFrameStart->getIterator ())) {
16601658 for (auto &Op : MI.operands ())
16611659 if (Op.isReg () && Op.isDef ())
1662- assert (! LiveRegs.contains (Op.getReg ()) &&
1660+ assert (LiveRegs.available (Op.getReg ()) &&
16631661 " live register clobbered by inserted prologue instructions" );
16641662 }
16651663 });
@@ -4014,7 +4012,7 @@ MachineBasicBlock::iterator tryMergeAdjacentSTG(MachineBasicBlock::iterator II,
40144012 // FIXME : This approach of bailing out from merge is conservative in
40154013 // some ways like even if stg loops are not present after merge the
40164014 // insert list, this liveness check is done (which is not needed).
4017- LivePhysRegs LiveRegs (*(MBB->getParent ()->getSubtarget ().getRegisterInfo ()));
4015+ LiveRegUnits LiveRegs (*(MBB->getParent ()->getSubtarget ().getRegisterInfo ()));
40184016 LiveRegs.addLiveOuts (*MBB);
40194017 for (auto I = MBB->rbegin ();; ++I) {
40204018 MachineInstr &MI = *I;
@@ -4023,7 +4021,7 @@ MachineBasicBlock::iterator tryMergeAdjacentSTG(MachineBasicBlock::iterator II,
40234021 LiveRegs.stepBackward (*I);
40244022 }
40254023 InsertI++;
4026- if (LiveRegs.contains (AArch64::NZCV))
4024+ if (! LiveRegs.available (AArch64::NZCV))
40274025 return InsertI;
40284026
40294027 llvm::stable_sort (Instrs,
0 commit comments