pub(crate) struct PassCtx<'sess> {
session: &'sess Session,
body_mir_opt_level: usize,
}Fields§
§session: &'sess SessionPrefer Self::mir_opt_level to Session::mir_opt_level to account for overrides.
body_mir_opt_level: usizeThe MIR optimization level for this body; may be overridden by #[optimize].
Implementations§
Methods from Deref<Target = Session>§
pub fn timer(&self, what: &'static str) -> VerboseTimingGuard<'_>
pub fn gather_enabled_denied_partial_mitigations( &self, ) -> Vec<DeniedPartialMitigation>
pub fn miri_unleashed_feature(&self, span: Span, feature_gate: Option<Symbol>)
pub fn local_crate_source_file(&self) -> Option<RealFileName>
Sourcepub fn finish_diagnostics(&self) -> Option<ErrorGuaranteed>
pub fn finish_diagnostics(&self) -> Option<ErrorGuaranteed>
Invoked all the way at the end to finish off diagnostics printing.
Sourcepub fn is_test_crate(&self) -> bool
pub fn is_test_crate(&self) -> bool
Returns true if the crate is a testing one.
Sourcepub fn create_feature_err<'a>(
&'a self,
err: impl Diagnostic<'a>,
feature: Symbol,
) -> Diag<'a>
pub fn create_feature_err<'a>( &'a self, err: impl Diagnostic<'a>, feature: Symbol, ) -> Diag<'a>
feature must be a language feature.
Sourcepub fn record_trimmed_def_paths(&self)
pub fn record_trimmed_def_paths(&self)
Record the fact that we called trimmed_def_paths, and do some
checking about whether its cost was justified.
pub fn dcx(&self) -> DiagCtxtHandle<'_>
pub fn source_map(&self) -> &SourceMap
pub fn proc_macro_quoted_spans(&self) -> impl Iterator<Item = (usize, Span)>
pub fn save_proc_macro_span(&self, span: Span) -> usize
Sourcepub fn enable_internal_lints(&self) -> bool
pub fn enable_internal_lints(&self) -> bool
Returns true if internal lints should be added to the lint store - i.e. if
-Zunstable-options is provided and this isn’t rustdoc (internal lints can trigger errors
to be emitted under rustdoc).
pub fn instrument_coverage(&self) -> bool
pub fn instrument_coverage_branch(&self) -> bool
pub fn instrument_coverage_condition(&self) -> bool
Sourcepub fn coverage_options(&self) -> &CoverageOptions
pub fn coverage_options(&self) -> &CoverageOptions
Provides direct access to the CoverageOptions struct, so that
individual flags for debugging/testing coverage instrumetation don’t
need separate accessors.
pub fn is_sanitizer_cfi_enabled(&self) -> bool
pub fn is_sanitizer_cfi_canonical_jump_tables_disabled(&self) -> bool
pub fn is_sanitizer_cfi_canonical_jump_tables_enabled(&self) -> bool
pub fn is_sanitizer_cfi_generalize_pointers_enabled(&self) -> bool
pub fn is_sanitizer_cfi_normalize_integers_enabled(&self) -> bool
pub fn is_sanitizer_kcfi_arity_enabled(&self) -> bool
pub fn is_sanitizer_kcfi_enabled(&self) -> bool
pub fn is_split_lto_unit_enabled(&self) -> bool
Sourcepub fn crt_static(&self, crate_type: Option<CrateType>) -> bool
pub fn crt_static(&self, crate_type: Option<CrateType>) -> bool
Check whether this compile session and crate type use static crt.
pub fn is_wasi_reactor(&self) -> bool
Sourcepub fn target_can_use_split_dwarf(&self) -> bool
pub fn target_can_use_split_dwarf(&self) -> bool
Returns true if the target can use the current split debuginfo configuration.
pub fn target_filesearch(&self) -> &FileSearch
pub fn host_filesearch(&self) -> &FileSearch
pub fn wasm_proc_macro_filesearch(&self) -> &FileSearch
Sourcepub fn get_tools_search_paths(&self, self_contained: bool) -> Vec<PathBuf>
pub fn get_tools_search_paths(&self, self_contained: bool) -> Vec<PathBuf>
Returns a list of directories where target-specific tool binaries are located. Some fallback
directories are also returned, for example if --sysroot is used but tools are missing
(#125246): we also add the bin directories to the sysroot where rustc is located.
Sourcepub fn is_rust_2015(&self) -> bool
pub fn is_rust_2015(&self) -> bool
Is this edition 2015?
Sourcepub fn at_least_rust_2018(&self) -> bool
pub fn at_least_rust_2018(&self) -> bool
Are we allowed to use features from the Rust 2018 edition?
Sourcepub fn at_least_rust_2021(&self) -> bool
pub fn at_least_rust_2021(&self) -> bool
Are we allowed to use features from the Rust 2021 edition?
Sourcepub fn at_least_rust_2024(&self) -> bool
pub fn at_least_rust_2024(&self) -> bool
Are we allowed to use features from the Rust 2024 edition?
Sourcepub fn needs_plt(&self) -> bool
pub fn needs_plt(&self) -> bool
Returns true if we should use the PLT for shared library calls.
Sourcepub fn emit_lifetime_markers(&self) -> bool
pub fn emit_lifetime_markers(&self) -> bool
Checks if LLVM lifetime markers should be emitted.
pub fn diagnostic_width(&self) -> usize
Sourcepub fn default_visibility(&self) -> SymbolVisibility
pub fn default_visibility(&self) -> SymbolVisibility
Returns the default symbol visibility.
pub fn staticlib_components(&self, verbatim: bool) -> (&str, &str)
pub fn lint_groups_iter(&self) -> Box<dyn Iterator<Item = LintGroup> + '_>
Sourcepub fn resolve_path(
&self,
path: impl Into<PathBuf>,
span: Span,
) -> Result<PathBuf, Diag<'_>>
pub fn resolve_path( &self, path: impl Into<PathBuf>, span: Span, ) -> Result<PathBuf, Diag<'_>>
Resolves a path mentioned inside Rust code, returning an absolute path.
This unifies the logic used for resolving include_*! and debugger visualizers.
pub fn verbose_internals(&self) -> bool
pub fn print_llvm_stats(&self) -> bool
pub fn print_llvm_stats_json(&self) -> Option<&String>
pub fn verify_llvm_ir(&self) -> bool
pub fn binary_dep_depinfo(&self) -> bool
pub fn mir_opt_level(&self) -> usize
Sourcepub fn panic_strategy(&self) -> PanicStrategy
pub fn panic_strategy(&self) -> PanicStrategy
Returns the panic strategy for this compile session. If the user explicitly selected one using ‘-C panic’, use that, otherwise use the panic strategy defined by the target.
pub fn fewer_names(&self) -> bool
pub fn unstable_options(&self) -> bool
pub fn is_nightly_build(&self) -> bool
pub fn overflow_checks(&self) -> bool
pub fn ub_checks(&self) -> bool
pub fn contract_checks(&self) -> bool
pub fn relocation_model(&self) -> RelocModel
pub fn code_model(&self) -> Option<CodeModel>
pub fn tls_model(&self) -> TlsModel
pub fn direct_access_external_data(&self) -> Option<bool>
pub fn split_debuginfo(&self) -> SplitDebuginfo
Sourcepub fn dwarf_version(&self) -> u32
pub fn dwarf_version(&self) -> u32
Returns the DWARF version passed on the CLI or the default for the target.
pub fn stack_protector(&self) -> StackProtector
Sourcepub fn branch_protection(&self) -> Option<BranchProtection>
pub fn branch_protection(&self) -> Option<BranchProtection>
Returns the -Zbranch-protection info. Note that it is adjusted to the current target, e.g.
some targets only support certain Pointer Authentication Code keys.
Accessing the session’s unstable branch_protection option fields directly is linted
against.
pub fn must_emit_unwind_tables(&self) -> bool
Sourcepub fn codegen_units(&self) -> CodegenUnits
pub fn codegen_units(&self) -> CodegenUnits
Returns the number of codegen units that should be used for this compilation
pub fn teach(&self, code: ErrCode) -> bool
pub fn edition(&self) -> Edition
pub fn link_dead_code(&self) -> bool
Sourcepub fn apple_deployment_target(&self) -> OSVersion
pub fn apple_deployment_target(&self) -> OSVersion
Get the deployment target on Apple platforms based on the standard environment variables,
or fall back to the minimum version supported by rustc.
This should be guarded behind if sess.target.is_like_darwin.
pub fn sanitizers(&self) -> SanitizerSet
pub fn pointer_authentication(&self) -> bool
pub fn pointer_authentication_functions(&self) -> Option<&PointerAuthSchema>
pub fn pointer_authentication_init_fini(&self) -> Option<&PointerAuthSchema>
Trait Implementations§
Auto Trait Implementations§
impl<'sess> !RefUnwindSafe for PassCtx<'sess>
impl<'sess> !Send for PassCtx<'sess>
impl<'sess> !Sync for PassCtx<'sess>
impl<'sess> !UnwindSafe for PassCtx<'sess>
impl<'sess> DynSend for PassCtx<'sess>
impl<'sess> DynSync for PassCtx<'sess>
impl<'sess> Freeze for PassCtx<'sess>
impl<'sess> Unpin for PassCtx<'sess>
impl<'sess> UnsafeUnpin for PassCtx<'sess>
Blanket Implementations§
Source§impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for Twhere
T: Copy,
impl<'tcx, T> ArenaAllocatable<'tcx, IsCopy> for Twhere
T: Copy,
fn allocate_on(self, arena: &'tcx Arena<'tcx>) -> &'tcx mut T
fn allocate_from_iter( arena: &'tcx Arena<'tcx>, iter: impl IntoIterator<Item = T>, ) -> &'tcx mut [T]
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T, R> CollectAndApply<T, R> for T
impl<T, R> CollectAndApply<T, R> for T
impl<T> ErasedDestructor for Twhere
T: 'static,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<K> IntoQueryKey<K> for K
impl<K> IntoQueryKey<K> for K
Source§fn into_query_key(self) -> K
fn into_query_key(self) -> K
Self to K.
This should always be a very cheap conversion, e.g. LocalDefId::to_def_id.Source§impl<T> MaybeResult<T> for T
impl<T> MaybeResult<T> for T
Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<I, T, U> Upcast<I, U> for Twhere
U: UpcastFrom<I, T>,
impl<I, T, U> Upcast<I, U> for Twhere
U: UpcastFrom<I, T>,
Source§impl<I, T> UpcastFrom<I, T> for T
impl<I, T> UpcastFrom<I, T> for T
fn upcast_from(from: T, _tcx: I) -> T
Source§impl<T> WithSubscriber for T
impl<T> WithSubscriber for T
Source§fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self> ⓘ
Source§fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
fn with_current_subscriber(self) -> WithDispatch<Self> ⓘ
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: 16 bytes