37 #ifndef LLVM_LIB_CODEGEN_REGALLOCBASE_H 38 #define LLVM_LIB_CODEGEN_REGALLOCBASE_H 49 class MachineRegisterInfo;
50 template<
typename T>
class SmallVectorImpl;
52 class TargetRegisterInfo;
62 virtual void anchor();
125 #endif // LLVM_LIB_CODEGEN_REGALLOCBASE_H static const char TimerGroupDescription[]
This class represents lattice values for constants.
LiveInterval - This class represents the liveness of a register, or stack slot.
virtual unsigned selectOrSplit(LiveInterval &VirtReg, SmallVectorImpl< unsigned > &splitLVRs)=0
SmallPtrSet< MachineInstr *, 32 > DeadRemats
Inst which is a def of an original reg and whose defs are already all dead after remat is saved in De...
RegAllocBase provides the register allocation driver and interface that can be extended to add intere...
virtual ~RegAllocBase()=default
void init(VirtRegMap &vrm, LiveIntervals &lis, LiveRegMatrix &mat)
static const char TimerGroupName[]
TargetRegisterInfo base class - We assume that the target defines a static array of TargetRegisterDes...
virtual void enqueue(LiveInterval *LI)=0
enqueue - Add VirtReg to the priority queue of unassigned registers.
SmallPtrSet - This class implements a set which is optimized for holding SmallSize or less elements...
virtual void aboutToRemoveInterval(LiveInterval &LI)
Method called when the allocator is about to remove a LiveInterval.
MachineRegisterInfo - Keep track of information for virtual and physical registers, including vreg register classes, use/def chains for registers, etc.
static bool VerifyEnabled
VerifyEnabled - True when -verify-regalloc is given.
const TargetRegisterInfo * TRI
virtual void postOptimization()
RegisterClassInfo RegClassInfo
MachineRegisterInfo * MRI
virtual Spiller & spiller()=0
virtual LiveInterval * dequeue()=0
dequeue - Return the next unassigned register, or NULL.