[#llvm-DefaultEvictionAdvisor] = xref:llvm.adoc[llvm]::DefaultEvictionAdvisor :relfileprefix: ../ :mrdocs: Default heuristic eviction advisor used by greedy register allocation. == Synopsis Declared in `<llvm/CodeGen/RegAllocEvictionAdvisor.h>` [source,cpp,subs="verbatim,replacements,macros,-callouts"] ---- class DefaultEvictionAdvisor : public xref:llvm/RegAllocEvictionAdvisor.adoc[RegAllocEvictionAdvisor] ---- == Base Classes [cols="1,4"] |=== | Name| Description | `xref:llvm/RegAllocEvictionAdvisor.adoc[RegAllocEvictionAdvisor]` | Interface to the eviction advisor for choosing live ranges to evict. |=== == Member Functions [cols="1,4"] |=== | Name| Description | xref:llvm/DefaultEvictionAdvisor/2constructor.adoc[`DefaultEvictionAdvisor`] [.small]#[constructor]# | Construct the default advisor for `MF` and allocator `RA.` | xref:llvm/RegAllocEvictionAdvisor/canEvictHintInterference.adoc[`canEvictHintInterference`] [.small]#[virtual]# | Find out if we can evict the live ranges occupying the given PhysReg, which is a hint (preferred register) for VirtReg. | xref:llvm/RegAllocEvictionAdvisor/isUnusedCalleeSavedReg.adoc[`isUnusedCalleeSavedReg`] | Returns true if the given `PhysReg` is a callee saved register and has not been used for allocation yet. | xref:llvm/RegAllocEvictionAdvisor/isUrgentEviction.adoc[`isUrgentEviction`] | Returns true if this is an urgent eviction. | xref:llvm/RegAllocEvictionAdvisor/tryFindEvictionCandidate.adoc[`tryFindEvictionCandidate`] [.small]#[virtual]# | Find a physical register that can be freed by eviction, or NoRegister. |=== == Protected Member Functions [cols="1,4"] |=== | Name| Description | xref:llvm/RegAllocEvictionAdvisor/canAllocatePhysReg.adoc[`canAllocatePhysReg`] | Return true if allocating `PhysReg` is worthwhile under the cost limit. | xref:llvm/RegAllocEvictionAdvisor/canReassign.adoc[`canReassign`] | Return true if `VirtReg` can be reassigned away from `FromReg.` | xref:llvm/RegAllocEvictionAdvisor/getOrderLimit.adoc[`getOrderLimit`] | Get the upper limit of elements in `Order` that need to be analyzed. |=== == Protected Data Members [cols="1,4"] |=== | Name| Description | xref:llvm/RegAllocEvictionAdvisor/EnableLocalReassign.adoc[`EnableLocalReassign`] | Run or not the local reassignment heuristic. This information is obtained from the TargetSubtargetInfo. | xref:llvm/RegAllocEvictionAdvisor/LIS.adoc[`LIS`] | Live interval analysis for the current function. | xref:llvm/RegAllocEvictionAdvisor/MF.adoc[`MF`] | Machine function currently being allocated. | xref:llvm/RegAllocEvictionAdvisor/MRI.adoc[`MRI`] | Machine register info for the current function. | xref:llvm/RegAllocEvictionAdvisor/Matrix.adoc[`Matrix`] | Live register matrix used to query interference. | xref:llvm/RegAllocEvictionAdvisor/RA.adoc[`RA`] | Greedy register allocator that owns related analyses. | xref:llvm/RegAllocEvictionAdvisor/RegClassInfo.adoc[`RegClassInfo`] | Cached register class information for the current function. | xref:llvm/RegAllocEvictionAdvisor/RegCosts.adoc[`RegCosts`] | Per‐physical‐register cost‐per‐use values. | xref:llvm/RegAllocEvictionAdvisor/TRI.adoc[`TRI`] | Target register info for the current subtarget. | xref:llvm/RegAllocEvictionAdvisor/VRM.adoc[`VRM`] | Mapping from virtual to physical registers. |=== [.small]#Created with https://www.mrdocs.com[MrDocs]#