Trait rustc_codegen_ssa::traits::CodegenBackend [−][src]
pub trait CodegenBackend {
fn codegen_crate<'tcx>(
&self,
tcx: TyCtxt<'tcx>,
metadata: EncodedMetadata,
need_metadata_module: bool
) -> Box<dyn Any>;
fn join_codegen(
&self,
ongoing_codegen: Box<dyn Any>,
sess: &Session
) -> Result<(CodegenResults, FxHashMap<WorkProductId, WorkProduct>), ErrorReported>;
fn link(
&self,
sess: &Session,
codegen_results: CodegenResults,
outputs: &OutputFilenames
) -> Result<(), ErrorReported>;
fn init(&self, _sess: &Session) { ... }
fn print(&self, _req: PrintRequest, _sess: &Session) { ... }
fn target_features(&self, _sess: &Session) -> Vec<Symbol> { ... }
fn print_passes(&self) { ... }
fn print_version(&self) { ... }
fn target_override(&self, _opts: &Options) -> Option<Target> { ... }
fn metadata_loader(&self) -> Box<MetadataLoaderDyn> { ... }
fn provide(&self, _providers: &mut Providers) { ... }
fn provide_extern(&self, _providers: &mut Providers) { ... }
}
Required methods
fn codegen_crate<'tcx>(
&self,
tcx: TyCtxt<'tcx>,
metadata: EncodedMetadata,
need_metadata_module: bool
) -> Box<dyn Any>
fn join_codegen(
&self,
ongoing_codegen: Box<dyn Any>,
sess: &Session
) -> Result<(CodegenResults, FxHashMap<WorkProductId, WorkProduct>), ErrorReported>
fn join_codegen(
&self,
ongoing_codegen: Box<dyn Any>,
sess: &Session
) -> Result<(CodegenResults, FxHashMap<WorkProductId, WorkProduct>), ErrorReported>
This is called on the returned Box<dyn Any>
from codegen_backend
Panics
Panics when the passed Box<dyn Any>
was not returned by codegen_backend
.
fn link(
&self,
sess: &Session,
codegen_results: CodegenResults,
outputs: &OutputFilenames
) -> Result<(), ErrorReported>
fn link(
&self,
sess: &Session,
codegen_results: CodegenResults,
outputs: &OutputFilenames
) -> Result<(), ErrorReported>
This is called on the returned Box<dyn Any>
from join_codegen
Panics
Panics when the passed Box<dyn Any>
was not returned by join_codegen
.
Provided methods
fn print(&self, _req: PrintRequest, _sess: &Session)
fn target_features(&self, _sess: &Session) -> Vec<Symbol>
fn print_passes(&self)
fn print_version(&self)
fn target_override(&self, _opts: &Options) -> Option<Target>
fn target_override(&self, _opts: &Options) -> Option<Target>
If this plugin provides additional builtin targets, provide the one enabled by the options here. Be careful: this is called before init() is called.
fn metadata_loader(&self) -> Box<MetadataLoaderDyn>
fn metadata_loader(&self) -> Box<MetadataLoaderDyn>
The metadata loader used to load rlib and dylib metadata.
Alternative codegen backends may want to use different rlib or dylib formats than the default native static archives and dynamic libraries.