Skip to main content

PromotableAllocationInterface

Trait PromotableAllocationInterface 

Source
pub trait PromotableAllocationInterface: Op {
    // Required methods
    fn alloc_info(&self, ctx: &Context) -> Vec<AllocInfo>;
    fn default_value(
        &self,
        ctx: &mut Context,
        inserter: &mut dyn Inserter,
        alloc_info: &AllocInfo,
    ) -> Result<Value>;
    fn promote(
        &self,
        ctx: &mut Context,
        rewriter: &mut dyn Rewriter,
        alloc_infos: &[AllocInfo],
    ) -> Result<()>;
}
Expand description

A promotable memory allocation implements this interface to provide the necessary info for register promotion.

Required Methods§

Source

fn alloc_info(&self, ctx: &Context) -> Vec<AllocInfo>

Get the allocation info(s) for this operation.

Source

fn default_value( &self, ctx: &mut Context, inserter: &mut dyn Inserter, alloc_info: &AllocInfo, ) -> Result<Value>

Get the default value for an allocation. This is used when there’s no reaching definition for a use. The alloc_info passed is guaranteed to be one of the entries returned by alloc_info. The inserter is positioned in the entry block. If the allocation is in the entry block, the inserter position will be before it.

Source

fn promote( &self, ctx: &mut Context, rewriter: &mut dyn Rewriter, alloc_infos: &[AllocInfo], ) -> Result<()>

Promote allocations. This is called after all uses have been promoted, and should remove the allocation (not necessary the operation itself) from the IR. The alloc_infos passed are guaranteed to be from the entries returned by alloc_info. The rewriter is set to insert before this alloc op.

Trait Implementations§

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementors§