LLVM API Documentation
#include <RegAllocBase.h>
Static Public Attributes | |
static bool | VerifyEnabled = false |
VerifyEnabled - True when -verify-regalloc is given. More... | |
Protected Member Functions | |
RegAllocBase () | |
virtual | ~RegAllocBase () |
void | init (VirtRegMap &vrm, LiveIntervals &lis, LiveRegMatrix &mat) |
void | allocatePhysRegs () |
virtual Spiller & | spiller ()=0 |
virtual void | enqueue (LiveInterval *LI)=0 |
enqueue - Add VirtReg to the priority queue of unassigned registers. More... | |
virtual LiveInterval * | dequeue ()=0 |
dequeue - Return the next unassigned register, or NULL. More... | |
virtual unsigned | selectOrSplit (LiveInterval &VirtReg, SmallVectorImpl< unsigned > &splitLVRs)=0 |
Protected Attributes | |
const TargetRegisterInfo * | TRI |
MachineRegisterInfo * | MRI |
VirtRegMap * | VRM |
LiveIntervals * | LIS |
LiveRegMatrix * | Matrix |
RegisterClassInfo | RegClassInfo |
Static Protected Attributes | |
static const char | TimerGroupName [] = "Register Allocation" |
RegAllocBase provides the register allocation driver and interface that can be extended to add interesting heuristics.
Register allocators must override the selectOrSplit() method to implement live range splitting. They must also override enqueue/dequeue to provide an assignment order.
Definition at line 59 of file RegAllocBase.h.
|
inlineprotected |
Definition at line 69 of file RegAllocBase.h.
|
inlineprotectedvirtual |
Definition at line 71 of file RegAllocBase.h.
|
protected |
Definition at line 83 of file RegAllocBase.cpp.
References llvm::LiveRegMatrix::assign(), llvm::VirtRegMap::assignVirt2Phys(), llvm::dbgs(), DEBUG, dequeue(), llvm::MachineInstr::emitError(), enqueue(), llvm::LiveIntervals::getInterval(), llvm::TargetRegisterClass::getName(), llvm::RegisterClassInfo::getOrder(), llvm::MachineRegisterInfo::getRegClass(), llvm::VirtRegMap::hasPhys(), I, llvm::LiveRegMatrix::invalidateVirtRegs(), llvm::MachineInstr::isInlineAsm(), llvm::TargetRegisterInfo::isVirtualRegister(), LIS, Matrix, llvm::A64CC::MI, MRI, llvm::LiveInterval::reg, llvm::MachineRegisterInfo::reg_begin(), llvm::MachineRegisterInfo::reg_nodbg_empty(), RegClassInfo, llvm::LiveIntervals::removeInterval(), llvm::report_fatal_error(), selectOrSplit(), and VRM.
|
protectedpure virtual |
dequeue - Return the next unassigned register, or NULL.
Referenced by allocatePhysRegs().
|
protectedpure virtual |
enqueue - Add VirtReg to the priority queue of unassigned registers.
Referenced by allocatePhysRegs().
|
protected |
Definition at line 56 of file RegAllocBase.cpp.
References llvm::MachineRegisterInfo::freezeReservedRegs(), llvm::VirtRegMap::getMachineFunction(), llvm::VirtRegMap::getRegInfo(), llvm::VirtRegMap::getTargetRegInfo(), LIS, Matrix, MRI, RegClassInfo, llvm::RegisterClassInfo::runOnMachineFunction(), TRI, and VRM.
|
protectedpure virtual |
Referenced by allocatePhysRegs().
|
protectedpure virtual |
|
protected |
Definition at line 65 of file RegAllocBase.h.
Referenced by allocatePhysRegs(), and init().
|
protected |
Definition at line 66 of file RegAllocBase.h.
Referenced by allocatePhysRegs(), and init().
|
protected |
Definition at line 63 of file RegAllocBase.h.
Referenced by allocatePhysRegs(), and init().
|
protected |
Definition at line 67 of file RegAllocBase.h.
Referenced by allocatePhysRegs(), and init().
|
staticprotected |
Definition at line 97 of file RegAllocBase.h.
|
protected |
Definition at line 62 of file RegAllocBase.h.
Referenced by init().
VerifyEnabled - True when -verify-regalloc is given.
Definition at line 101 of file RegAllocBase.h.
|
protected |
Definition at line 64 of file RegAllocBase.h.
Referenced by allocatePhysRegs(), and init().