# Struct rustc_codegen_ssa::back::write::ModuleConfig

source ·

    pub struct ModuleConfig {Show 30 fields
        pub passes: Vec<String>,
        pub opt_level: Option<OptLevel>,
        pub opt_size: Option<OptLevel>,
        pub pgo_gen: SwitchWithOptPath,
        pub pgo_use: Option<PathBuf>,
        pub pgo_sample_use: Option<PathBuf>,
        pub debug_info_for_profiling: bool,
        pub instrument_coverage: bool,
        pub instrument_gcov: bool,
        pub sanitizer: SanitizerSet,
        pub sanitizer_recover: SanitizerSet,
        pub sanitizer_memory_track_origins: usize,
        pub emit_pre_lto_bc: bool,
        pub emit_no_opt_bc: bool,
        pub emit_bc: bool,
        pub emit_ir: bool,
        pub emit_asm: bool,
        pub emit_obj: EmitObj,
        pub emit_thin_lto: bool,
        pub bc_cmdline: String,
        pub verify_llvm_ir: bool,
        pub no_prepopulate_passes: bool,
        pub no_builtins: bool,
        pub time_module: bool,
        pub vectorize_loop: bool,
        pub vectorize_slp: bool,
        pub merge_functions: bool,
        pub inline_threshold: Option<u32>,
        pub emit_lifetime_markers: bool,
        pub llvm_plugins: Vec<String>,
    }

Expand description

Module-specific configuration for `optimize_and_codegen`.

## Fields§

§`passes: Vec<String>`

Names of additional optimization passes to run.

§`opt_level: Option<OptLevel>`

Some(level) to optimize at a certain level, or None to run absolutely no optimizations (used for the metadata module).

§`opt_size: Option<OptLevel>`

Some(level) to optimize binary size, or None to not affect program size.

§`pgo_gen: SwitchWithOptPath`§`pgo_use: Option<PathBuf>`§`pgo_sample_use: Option<PathBuf>`§`debug_info_for_profiling: bool`§`instrument_coverage: bool`§`instrument_gcov: bool`§`sanitizer: SanitizerSet`§`sanitizer_recover: SanitizerSet`§`sanitizer_memory_track_origins: usize`§`emit_pre_lto_bc: bool`§`emit_no_opt_bc: bool`§`emit_bc: bool`§`emit_ir: bool`§`emit_asm: bool`§`emit_obj: EmitObj`§`emit_thin_lto: bool`§`bc_cmdline: String`§`verify_llvm_ir: bool`§`no_prepopulate_passes: bool`§`no_builtins: bool`§`time_module: bool`§`vectorize_loop: bool`§`vectorize_slp: bool`§`merge_functions: bool`§`inline_threshold: Option<u32>`§`emit_lifetime_markers: bool`§`llvm_plugins: Vec<String>`

## Implementations§

source§

### impl ModuleConfig

source

#### fn new( kind: ModuleKind, tcx: TyCtxt<'_>, no_builtins: bool, is_compiler_builtins: bool ) -> ModuleConfig

source

#### pub fn bitcode_needed(&self) -> bool

## Auto Trait Implementations§

§

### impl RefUnwindSafe for ModuleConfig

§

### impl Send for ModuleConfig

§

### impl Sync for ModuleConfig

§

### impl Unpin for ModuleConfig

§

### impl UnwindSafe for ModuleConfig

## Blanket Implementations§

source§

### impl<T> Any for T
where T: 'static + ?Sized,

source§

#### fn type_id(&self) -> TypeId

Gets the `TypeId` of `self`. Read more
source§

### impl<T> Borrow<T> for T
where T: ?Sized,

source§

#### fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

### impl<T> BorrowMut<T> for T
where T: ?Sized,

source§

#### fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

### impl<T> From<T> for T

source§

#### fn from(t: T) -> T

Returns the argument unchanged.

source§

### impl<T, U> Into<U> for T
where U: From<T>,

source§

#### fn into(self) -> U

Calls `U::from(self)`.

That is, this conversion is whatever the implementation of `From<T> for U` chooses to do.

source§

### impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

#### type Error = Infallible

The type returned in the event of a conversion error.
source§

#### fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

### impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

#### type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

#### fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.

## Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain `repr(...)` attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 184 bytes