Go to the documentation of this file.
48 if (MOP.isDef() && MOP.getReg().isPhysical())
53 if (MOP.isRegMask()) {
61 if (!MOP.isReg() || !MOP.readsReg())
64 if (MOP.getReg().isPhysical())
73 if (!MOP.getReg().isPhysical())
75 if (MOP.isDef() || MOP.readsReg())
80 if (MOP.isRegMask()) {
100 const unsigned N = *CSR;
106 if (
Info == CSI.end() ||
Info->isRestored())
134 Pristine.removeReg(
Info.getReg());
This is an optimization pass for GlobalISel generic memory operations.
MachineRegisterInfo - Keep track of information for virtual and physical registers,...
bool isReturnBlock() const
Convenience function that returns true if the block ends in a return instruction.
void addReg(MCPhysReg Reg)
Adds register units covered by physical register Reg.
iterator_range< livein_iterator > liveins() const
void addUnits(const BitVector &RegUnits)
Adds all register units marked in the bitvector RegUnits.
void addLiveIns(const MachineBasicBlock &MBB)
Adds registers living into block MBB.
void addRegMasked(MCPhysReg Reg, LaneBitmask Mask)
Adds register units covered by physical register Reg that are part of the lanemask Mask.
unsigned getNumRegUnits() const
Return the number of (native) register units in the target.
bool empty() const
Returns true if the set is empty.
static void addBlockLiveIns(LiveRegUnits &LiveUnits, const MachineBasicBlock &MBB)
Add live-in registers of basic block MBB to LiveUnits.
void addLiveOuts(const MachineBasicBlock &MBB)
Adds registers living out of block MBB.
MachineRegisterInfo & getRegInfo()
getRegInfo - Return information about the registers currently in use.
void accumulate(const MachineInstr &MI)
Adds all register units used, defined or clobbered in MI.
static GCRegistry::Add< CoreCLRGC > E("coreclr", "CoreCLR-compatible GC")
MachineOperand class - Representation of each machine instruction operand.
Analysis containing CSE Info
A set of register units used to track register liveness.
void removeReg(MCPhysReg Reg)
Removes all register units covered by physical register Reg.
bool isCalleeSavedInfoValid() const
Has the callee saved info been calculated yet?
bool isValid() const
Check if the iterator is at the end of the list.
void stepBackward(const MachineInstr &MI)
Updates liveness when stepping backwards over the instruction MI.
static bool clobbersPhysReg(const uint32_t *RegMask, MCRegister PhysReg)
clobbersPhysReg - Returns true if this RegMask clobbers PhysReg.
Representation of each machine instruction.
const MCPhysReg * getCalleeSavedRegs() const
Returns list of callee saved registers.
uint16_t MCPhysReg
An unsigned integer type large enough to represent all physical registers, but not necessarily virtua...
static void addCalleeSavedRegs(LiveRegUnits &LiveUnits, const MachineFunction &MF)
Adds all callee saved registers to LiveUnits.
MachineFrameInfo & getFrameInfo()
getFrameInfo - Return the frame info object for the current function.
const MachineFunction * getParent() const
Return the MachineFunction containing this basic block.
const std::vector< CalleeSavedInfo > & getCalleeSavedInfo() const
Returns a reference to call saved info vector for the current function.
iterator_range< succ_iterator > successors()
unsigned const MachineRegisterInfo * MRI
auto find_if(R &&Range, UnaryPredicate P)
Provide wrappers to std::find_if which take ranges instead of having to pass begin/end explicitly.
The CalleeSavedInfo class tracks the information need to locate where a callee saved register is in t...
void removeRegsNotPreserved(const uint32_t *RegMask)
Removes register units not preserved by the regmask RegMask.
MCRegUnitRootIterator enumerates the root registers of a register unit.
The MachineFrameInfo class represents an abstract stack frame until prolog/epilog code is inserted.
void addRegsInMask(const uint32_t *RegMask)
Adds register units not preserved by the regmask RegMask.