Go to the documentation of this file.
23 #ifndef LLVM_CODEGEN_LIVERANGECALC_H
24 #define LLVM_CODEGEN_LIVERANGECALC_H
39 template <
class NodeT>
class DomTreeNodeBase;
40 class MachineDominatorTree;
41 class MachineFunction;
42 class MachineRegisterInfo;
55 using LiveOutPair = std::pair<VNInfo *, MachineDomTreeNode *>;
119 : LR(LR), DomNode(
node),
Kill(kill) {}
162 void updateFromLiveIns();
231 Seen.
set(
MBB->getNumber());
232 Map[
MBB] = LiveOutPair(VNI,
nullptr);
246 LiveIn.push_back(LiveInBlock(LR, DomNode,
Kill));
270 #endif // LLVM_CODEGEN_LIVERANGECALC_H
MachineRegisterInfo - Keep track of information for virtual and physical registers,...
void extend(LiveRange &LR, SlotIndex Use, unsigned PhysReg, ArrayRef< SlotIndex > Undefs)
Extend the live range of LR to reach Use.
#define LLVM_ATTRIBUTE_UNUSED
void calculateValues()
calculateValues - Calculate the value that will be live-in to each block added with addLiveInBlock.
void resetLiveOutMap()
Reset Map and Seen fields.
SlotIndex - An opaque wrapper around machine indexes.
@ Kill
The last use of a register.
DomTreeNodeBase< MachineBasicBlock > MachineDomTreeNode
const MachineRegisterInfo * getRegInfo() const
void addLiveInBlock(LiveRange &LR, MachineDomTreeNode *DomNode, SlotIndex Kill=SlotIndex())
addLiveInBlock - Add a block with an unknown live-in value.
This class represents the liveness of a register, stack slot, etc.
Allocate memory in an ever growing pool, as if by bump-pointer.
This currently compiles esp xmm0 movsd esp eax eax esp ret We should use not the dag combiner This is because dagcombine2 needs to be able to see through the X86ISD::Wrapper node
SlotIndexes * getIndexes()
ArrayRef - Represent a constant reference to an array (0 or more elements consecutively in memory),...
Base class for the actual dominator tree node.
const MachineFunction * getMachineFunction()
Some getters to expose in a read-only way some private fields to subclasses.
unsigned const MachineRegisterInfo * MRI
static LLVM_ATTRIBUTE_UNUSED bool isJointlyDominated(const MachineBasicBlock *MBB, ArrayRef< SlotIndex > Defs, const SlotIndexes &Indexes)
A diagnostic function to check if the end of the block MBB is jointly dominated by the blocks corresp...
VNInfo - Value Number Information.
VNInfo::Allocator * getVNAlloc()
MachineDominatorTree * getDomTree()
void reset(const MachineFunction *mf, SlotIndexes *SI, MachineDominatorTree *MDT, VNInfo::Allocator *VNIA)
reset - Prepare caches for a new set of non-overlapping live ranges.
void setLiveOutValue(MachineBasicBlock *MBB, VNInfo *VNI)
setLiveOutValue - Indicate that VNI is live out from MBB.
DominatorTree Class - Concrete subclass of DominatorTreeBase that is used to compute a normal dominat...
LLVM Value Representation.
A Use represents the edge between a Value definition and its users.