# Trait rustc_codegen_ssa::traits::backend::CodegenBackend

source ·

    pub trait CodegenBackend {
    Show 13 methods    // Required methods
        fn locale_resource(&self) -> &'static str;
        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,
            outputs: &OutputFilenames
        ) -> (CodegenResults, FxIndexMap<WorkProductId, WorkProduct>);
        fn link(
            &self,
            sess: &Session,
            codegen_results: CodegenResults,
            outputs: &OutputFilenames
        ) -> Result<(), ErrorGuaranteed>;

        // Provided methods
        fn init(&self, _sess: &Session) { ... }
        fn print(
            &self,
            _req: &PrintRequest,
            _out: &mut dyn PrintBackendInfo,
            _sess: &Session
        ) { ... }
        fn target_features(
            &self,
            _sess: &Session,
            _allow_unstable: bool
        ) -> 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 supports_parallel(&self) -> bool { ... }
    }

## Required Methods§

source

#### fn locale_resource(&self) -> &'static str

Locale resources for diagnostic messages - a string the content of the Fluent resource. Called before `init` so that all other functions are able to emit translatable diagnostics.

source

#### fn codegen_crate<'tcx>( &self, tcx: TyCtxt<'tcx>, metadata: EncodedMetadata, need_metadata_module: bool ) -> Box<dyn Any>

source

#### fn join_codegen( &self, ongoing_codegen: Box<dyn Any>, sess: &Session, outputs: &OutputFilenames ) -> (CodegenResults, FxIndexMap<WorkProductId, WorkProduct>)

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`.

source

#### fn link( &self, sess: &Session, codegen_results: CodegenResults, outputs: &OutputFilenames ) -> Result<(), ErrorGuaranteed>

This is called on the returned `CodegenResults` from `join_codegen`

## Provided Methods§

source

#### fn init(&self, _sess: &Session)

source

#### fn print( &self, _req: &PrintRequest, _out: &mut dyn PrintBackendInfo, _sess: &Session )

source

#### fn target_features(&self, _sess: &Session, _allow_unstable: bool) -> Vec<Symbol>

source

#### fn print_passes(&self)

source

#### fn print_version(&self)

source

#### 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.

source

#### 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.

source

#### fn provide(&self, _providers: &mut Providers)

source

#### fn supports_parallel(&self) -> bool

Returns `true` if this backend can be safely called from multiple threads.

Defaults to `true`.

## Implementors§