[−][src]Trait rustc_codegen_ssa::traits::WriteBackendMethods

pub trait WriteBackendMethods: 'static + Sized + Clone {
    type Module: Send + Sync;
    type TargetMachine;
    type ModuleBuffer: ModuleBufferMethods;
    type Context: ?Sized;
    type ThinData: Send + Sync;
    type ThinBuffer: ThinBufferMethods;
    pub fn run_link(
        cgcx: &CodegenContext<Self>,
        diag_handler: &Handler,
        modules: Vec<ModuleCodegen<Self::Module>>
    ) -> Result<ModuleCodegen<Self::Module>, FatalError>;
pub fn run_fat_lto(
        cgcx: &CodegenContext<Self>,
        modules: Vec<FatLTOInput<Self>>,
        cached_modules: Vec<(SerializedModule<Self::ModuleBuffer>, WorkProduct)>
    ) -> Result<LtoModuleCodegen<Self>, FatalError>;
pub fn run_thin_lto(
        cgcx: &CodegenContext<Self>,
        modules: Vec<(String, Self::ThinBuffer)>,
        cached_modules: Vec<(SerializedModule<Self::ModuleBuffer>, WorkProduct)>
    ) -> Result<(Vec<LtoModuleCodegen<Self>>, Vec<WorkProduct>), FatalError>;
pub fn print_pass_timings(&self);
pub unsafe fn optimize(
        cgcx: &CodegenContext<Self>,
        diag_handler: &Handler,
        module: &ModuleCodegen<Self::Module>,
        config: &ModuleConfig
    ) -> Result<(), FatalError>;
pub unsafe fn optimize_thin(
        cgcx: &CodegenContext<Self>,
        thin: &mut ThinModule<Self>
    ) -> Result<ModuleCodegen<Self::Module>, FatalError>;
pub unsafe fn codegen(
        cgcx: &CodegenContext<Self>,
        diag_handler: &Handler,
        module: ModuleCodegen<Self::Module>,
        config: &ModuleConfig
    ) -> Result<CompiledModule, FatalError>;
pub fn prepare_thin(
        module: ModuleCodegen<Self::Module>
    ) -> (String, Self::ThinBuffer);
pub fn serialize_module(
        module: ModuleCodegen<Self::Module>
    ) -> (String, Self::ModuleBuffer);
pub fn run_lto_pass_manager(
        cgcx: &CodegenContext<Self>,
        llmod: &ModuleCodegen<Self::Module>,
        config: &ModuleConfig,
        thin: bool
    ); }

Associated Types

type Module: Send + Sync[src]

type TargetMachine[src]

type ModuleBuffer: ModuleBufferMethods[src]

type Context: ?Sized[src]

type ThinData: Send + Sync[src]

type ThinBuffer: ThinBufferMethods[src]

Loading content...

Required methods

Merge all modules into main_module and returning it

pub fn run_fat_lto(
    cgcx: &CodegenContext<Self>,
    modules: Vec<FatLTOInput<Self>>,
    cached_modules: Vec<(SerializedModule<Self::ModuleBuffer>, WorkProduct)>
) -> Result<LtoModuleCodegen<Self>, FatalError>
[src]

Performs fat LTO by merging all modules into a single one and returning it for further optimization.

pub fn run_thin_lto(
    cgcx: &CodegenContext<Self>,
    modules: Vec<(String, Self::ThinBuffer)>,
    cached_modules: Vec<(SerializedModule<Self::ModuleBuffer>, WorkProduct)>
) -> Result<(Vec<LtoModuleCodegen<Self>>, Vec<WorkProduct>), FatalError>
[src]

Performs thin LTO by performing necessary global analysis and returning two lists, one of the modules that need optimization and another for modules that can simply be copied over from the incr. comp. cache.

pub fn print_pass_timings(&self)[src]

pub unsafe fn optimize(
    cgcx: &CodegenContext<Self>,
    diag_handler: &Handler,
    module: &ModuleCodegen<Self::Module>,
    config: &ModuleConfig
) -> Result<(), FatalError>
[src]

pub unsafe fn optimize_thin(
    cgcx: &CodegenContext<Self>,
    thin: &mut ThinModule<Self>
) -> Result<ModuleCodegen<Self::Module>, FatalError>
[src]

pub unsafe fn codegen(
    cgcx: &CodegenContext<Self>,
    diag_handler: &Handler,
    module: ModuleCodegen<Self::Module>,
    config: &ModuleConfig
) -> Result<CompiledModule, FatalError>
[src]

pub fn prepare_thin(
    module: ModuleCodegen<Self::Module>
) -> (String, Self::ThinBuffer)
[src]

pub fn serialize_module(
    module: ModuleCodegen<Self::Module>
) -> (String, Self::ModuleBuffer)
[src]

pub fn run_lto_pass_manager(
    cgcx: &CodegenContext<Self>,
    llmod: &ModuleCodegen<Self::Module>,
    config: &ModuleConfig,
    thin: bool
)
[src]

Loading content...

Implementors

Loading content...