Skip to main content

rustc_query_impl/
dep_kind_vtables.rs

1use rustc_middle::bug;
2use rustc_middle::dep_graph::{DepKindVTable, DepNodeKey, KeyFingerprintStyle};
3use rustc_middle::query::QueryCache;
4
5use crate::GetQueryVTable;
6use crate::plumbing::{force_from_dep_node_inner, try_load_from_on_disk_cache_inner};
7
8/// [`DepKindVTable`] constructors for special dep kinds that aren't queries.
9#[expect(non_snake_case, reason = "use non-snake case to avoid collision with query names")]
10mod non_query {
11    use super::*;
12
13    // We use this for most things when incr. comp. is turned off.
14    pub(crate) fn Null<'tcx>() -> DepKindVTable<'tcx> {
15        DepKindVTable {
16            is_anon: false,
17            is_eval_always: false,
18            key_fingerprint_style: KeyFingerprintStyle::Unit,
19            force_from_dep_node: Some(|_, dep_node, _| {
20                ::rustc_middle::util::bug::bug_fmt(format_args!("force_from_dep_node: encountered {0:?}",
        dep_node))bug!("force_from_dep_node: encountered {dep_node:?}")
21            }),
22            try_load_from_on_disk_cache: None,
23        }
24    }
25
26    // We use this for the forever-red node.
27    pub(crate) fn Red<'tcx>() -> DepKindVTable<'tcx> {
28        DepKindVTable {
29            is_anon: false,
30            is_eval_always: false,
31            key_fingerprint_style: KeyFingerprintStyle::Unit,
32            force_from_dep_node: Some(|_, dep_node, _| {
33                ::rustc_middle::util::bug::bug_fmt(format_args!("force_from_dep_node: encountered {0:?}",
        dep_node))bug!("force_from_dep_node: encountered {dep_node:?}")
34            }),
35            try_load_from_on_disk_cache: None,
36        }
37    }
38
39    pub(crate) fn SideEffect<'tcx>() -> DepKindVTable<'tcx> {
40        DepKindVTable {
41            is_anon: false,
42            is_eval_always: false,
43            key_fingerprint_style: KeyFingerprintStyle::Unit,
44            force_from_dep_node: Some(|tcx, _, prev_index| {
45                tcx.dep_graph.force_diagnostic_node(tcx, prev_index);
46                true
47            }),
48            try_load_from_on_disk_cache: None,
49        }
50    }
51
52    pub(crate) fn AnonZeroDeps<'tcx>() -> DepKindVTable<'tcx> {
53        DepKindVTable {
54            is_anon: true,
55            is_eval_always: false,
56            key_fingerprint_style: KeyFingerprintStyle::Opaque,
57            force_from_dep_node: Some(|_, _, _| ::rustc_middle::util::bug::bug_fmt(format_args!("cannot force an anon node"))bug!("cannot force an anon node")),
58            try_load_from_on_disk_cache: None,
59        }
60    }
61
62    pub(crate) fn TraitSelect<'tcx>() -> DepKindVTable<'tcx> {
63        DepKindVTable {
64            is_anon: true,
65            is_eval_always: false,
66            key_fingerprint_style: KeyFingerprintStyle::Unit,
67            force_from_dep_node: None,
68            try_load_from_on_disk_cache: None,
69        }
70    }
71
72    pub(crate) fn CompileCodegenUnit<'tcx>() -> DepKindVTable<'tcx> {
73        DepKindVTable {
74            is_anon: false,
75            is_eval_always: false,
76            key_fingerprint_style: KeyFingerprintStyle::Opaque,
77            force_from_dep_node: None,
78            try_load_from_on_disk_cache: None,
79        }
80    }
81
82    pub(crate) fn CompileMonoItem<'tcx>() -> DepKindVTable<'tcx> {
83        DepKindVTable {
84            is_anon: false,
85            is_eval_always: false,
86            key_fingerprint_style: KeyFingerprintStyle::Opaque,
87            force_from_dep_node: None,
88            try_load_from_on_disk_cache: None,
89        }
90    }
91
92    pub(crate) fn Metadata<'tcx>() -> DepKindVTable<'tcx> {
93        DepKindVTable {
94            is_anon: false,
95            is_eval_always: false,
96            key_fingerprint_style: KeyFingerprintStyle::Unit,
97            force_from_dep_node: None,
98            try_load_from_on_disk_cache: None,
99        }
100    }
101}
102
103/// Shared implementation of the [`DepKindVTable`] constructor for queries.
104/// Called from macro-generated code for each query.
105pub(crate) fn make_dep_kind_vtable_for_query<'tcx, Q>(
106    is_anon: bool,
107    is_eval_always: bool,
108) -> DepKindVTable<'tcx>
109where
110    Q: GetQueryVTable<'tcx>,
111{
112    let key_fingerprint_style = if is_anon {
113        KeyFingerprintStyle::Opaque
114    } else {
115        <Q::Cache as QueryCache>::Key::key_fingerprint_style()
116    };
117
118    if is_anon || !key_fingerprint_style.reconstructible() {
119        return DepKindVTable {
120            is_anon,
121            is_eval_always,
122            key_fingerprint_style,
123            force_from_dep_node: None,
124            try_load_from_on_disk_cache: None,
125        };
126    }
127
128    DepKindVTable {
129        is_anon,
130        is_eval_always,
131        key_fingerprint_style,
132        force_from_dep_node: Some(|tcx, dep_node, _| {
133            force_from_dep_node_inner(Q::query_vtable(tcx), tcx, dep_node)
134        }),
135        try_load_from_on_disk_cache: Some(|tcx, dep_node| {
136            try_load_from_on_disk_cache_inner(Q::query_vtable(tcx), tcx, dep_node)
137        }),
138    }
139}
140
141/// Helper module containing a [`DepKindVTable`] constructor for each dep kind,
142/// for use with [`rustc_middle::make_dep_kind_array`].
143///
144/// That macro will check that we gave it a constructor for every known dep kind.
145mod _dep_kind_vtable_ctors {
146    // Re-export all of the vtable constructors for non-query and query dep kinds.
147
148    // Non-query vtable constructors are defined in normal code.
149    pub(crate) use super::non_query::*;
150    // Query vtable constructors are defined via a macro.
151    pub(crate) use crate::_dep_kind_vtable_ctors_for_queries::*;
152}
153
154pub fn make_dep_kind_vtables<'tcx>(
155    arena: &'tcx rustc_middle::arena::Arena<'tcx>,
156) -> &'tcx [DepKindVTable<'tcx>] {
157    // Create an array of vtables, one for each dep kind (non-query and query).
158    let dep_kind_vtables: [DepKindVTable<'tcx>; _] =
159        [_dep_kind_vtable_ctors::Null(), _dep_kind_vtable_ctors::Red(),
        _dep_kind_vtable_ctors::SideEffect(),
        _dep_kind_vtable_ctors::AnonZeroDeps(),
        _dep_kind_vtable_ctors::TraitSelect(),
        _dep_kind_vtable_ctors::CompileCodegenUnit(),
        _dep_kind_vtable_ctors::CompileMonoItem(),
        _dep_kind_vtable_ctors::Metadata(),
        _dep_kind_vtable_ctors::derive_macro_expansion(),
        _dep_kind_vtable_ctors::trigger_delayed_bug(),
        _dep_kind_vtable_ctors::registered_tools(),
        _dep_kind_vtable_ctors::early_lint_checks(),
        _dep_kind_vtable_ctors::env_var_os(),
        _dep_kind_vtable_ctors::resolutions(),
        _dep_kind_vtable_ctors::resolver_for_lowering_raw(),
        _dep_kind_vtable_ctors::source_span(),
        _dep_kind_vtable_ctors::hir_crate(),
        _dep_kind_vtable_ctors::hir_crate_items(),
        _dep_kind_vtable_ctors::hir_module_items(),
        _dep_kind_vtable_ctors::local_def_id_to_hir_id(),
        _dep_kind_vtable_ctors::hir_owner_parent_q(),
        _dep_kind_vtable_ctors::opt_hir_owner_nodes(),
        _dep_kind_vtable_ctors::hir_attr_map(),
        _dep_kind_vtable_ctors::opt_ast_lowering_delayed_lints(),
        _dep_kind_vtable_ctors::const_param_default(),
        _dep_kind_vtable_ctors::const_of_item(),
        _dep_kind_vtable_ctors::type_of(),
        _dep_kind_vtable_ctors::type_of_opaque(),
        _dep_kind_vtable_ctors::type_of_opaque_hir_typeck(),
        _dep_kind_vtable_ctors::type_alias_is_lazy(),
        _dep_kind_vtable_ctors::collect_return_position_impl_trait_in_trait_tys(),
        _dep_kind_vtable_ctors::opaque_ty_origin(),
        _dep_kind_vtable_ctors::unsizing_params_for_adt(),
        _dep_kind_vtable_ctors::analysis(),
        _dep_kind_vtable_ctors::check_expectations(),
        _dep_kind_vtable_ctors::generics_of(),
        _dep_kind_vtable_ctors::predicates_of(),
        _dep_kind_vtable_ctors::opaque_types_defined_by(),
        _dep_kind_vtable_ctors::nested_bodies_within(),
        _dep_kind_vtable_ctors::explicit_item_bounds(),
        _dep_kind_vtable_ctors::explicit_item_self_bounds(),
        _dep_kind_vtable_ctors::item_bounds(),
        _dep_kind_vtable_ctors::item_self_bounds(),
        _dep_kind_vtable_ctors::item_non_self_bounds(),
        _dep_kind_vtable_ctors::impl_super_outlives(),
        _dep_kind_vtable_ctors::native_libraries(),
        _dep_kind_vtable_ctors::shallow_lint_levels_on(),
        _dep_kind_vtable_ctors::lint_expectations(),
        _dep_kind_vtable_ctors::lints_that_dont_need_to_run(),
        _dep_kind_vtable_ctors::expn_that_defined(),
        _dep_kind_vtable_ctors::is_panic_runtime(),
        _dep_kind_vtable_ctors::representability(),
        _dep_kind_vtable_ctors::representability_adt_ty(),
        _dep_kind_vtable_ctors::params_in_repr(),
        _dep_kind_vtable_ctors::thir_body(),
        _dep_kind_vtable_ctors::mir_keys(),
        _dep_kind_vtable_ctors::mir_const_qualif(),
        _dep_kind_vtable_ctors::mir_built(),
        _dep_kind_vtable_ctors::thir_abstract_const(),
        _dep_kind_vtable_ctors::mir_drops_elaborated_and_const_checked(),
        _dep_kind_vtable_ctors::mir_for_ctfe(),
        _dep_kind_vtable_ctors::mir_promoted(),
        _dep_kind_vtable_ctors::closure_typeinfo(),
        _dep_kind_vtable_ctors::closure_saved_names_of_captured_variables(),
        _dep_kind_vtable_ctors::mir_coroutine_witnesses(),
        _dep_kind_vtable_ctors::check_coroutine_obligations(),
        _dep_kind_vtable_ctors::check_potentially_region_dependent_goals(),
        _dep_kind_vtable_ctors::optimized_mir(),
        _dep_kind_vtable_ctors::coverage_attr_on(),
        _dep_kind_vtable_ctors::coverage_ids_info(),
        _dep_kind_vtable_ctors::promoted_mir(),
        _dep_kind_vtable_ctors::erase_and_anonymize_regions_ty(),
        _dep_kind_vtable_ctors::wasm_import_module_map(),
        _dep_kind_vtable_ctors::trait_explicit_predicates_and_bounds(),
        _dep_kind_vtable_ctors::explicit_predicates_of(),
        _dep_kind_vtable_ctors::inferred_outlives_of(),
        _dep_kind_vtable_ctors::explicit_super_predicates_of(),
        _dep_kind_vtable_ctors::explicit_implied_predicates_of(),
        _dep_kind_vtable_ctors::explicit_supertraits_containing_assoc_item(),
        _dep_kind_vtable_ctors::const_conditions(),
        _dep_kind_vtable_ctors::explicit_implied_const_bounds(),
        _dep_kind_vtable_ctors::type_param_predicates(),
        _dep_kind_vtable_ctors::trait_def(),
        _dep_kind_vtable_ctors::adt_def(),
        _dep_kind_vtable_ctors::adt_destructor(),
        _dep_kind_vtable_ctors::adt_async_destructor(),
        _dep_kind_vtable_ctors::adt_sizedness_constraint(),
        _dep_kind_vtable_ctors::adt_dtorck_constraint(),
        _dep_kind_vtable_ctors::constness(),
        _dep_kind_vtable_ctors::asyncness(),
        _dep_kind_vtable_ctors::is_promotable_const_fn(),
        _dep_kind_vtable_ctors::coroutine_by_move_body_def_id(),
        _dep_kind_vtable_ctors::coroutine_kind(),
        _dep_kind_vtable_ctors::coroutine_for_closure(),
        _dep_kind_vtable_ctors::coroutine_hidden_types(),
        _dep_kind_vtable_ctors::crate_variances(),
        _dep_kind_vtable_ctors::variances_of(),
        _dep_kind_vtable_ctors::inferred_outlives_crate(),
        _dep_kind_vtable_ctors::associated_item_def_ids(),
        _dep_kind_vtable_ctors::associated_item(),
        _dep_kind_vtable_ctors::associated_items(),
        _dep_kind_vtable_ctors::impl_item_implementor_ids(),
        _dep_kind_vtable_ctors::associated_types_for_impl_traits_in_trait_or_impl(),
        _dep_kind_vtable_ctors::impl_trait_header(),
        _dep_kind_vtable_ctors::impl_self_is_guaranteed_unsized(),
        _dep_kind_vtable_ctors::inherent_impls(),
        _dep_kind_vtable_ctors::incoherent_impls(),
        _dep_kind_vtable_ctors::check_transmutes(),
        _dep_kind_vtable_ctors::check_unsafety(),
        _dep_kind_vtable_ctors::check_tail_calls(),
        _dep_kind_vtable_ctors::assumed_wf_types(),
        _dep_kind_vtable_ctors::assumed_wf_types_for_rpitit(),
        _dep_kind_vtable_ctors::fn_sig(), _dep_kind_vtable_ctors::lint_mod(),
        _dep_kind_vtable_ctors::check_unused_traits(),
        _dep_kind_vtable_ctors::check_mod_attrs(),
        _dep_kind_vtable_ctors::check_mod_unstable_api_usage(),
        _dep_kind_vtable_ctors::check_mod_privacy(),
        _dep_kind_vtable_ctors::check_liveness(),
        _dep_kind_vtable_ctors::live_symbols_and_ignored_derived_traits(),
        _dep_kind_vtable_ctors::check_mod_deathness(),
        _dep_kind_vtable_ctors::check_type_wf(),
        _dep_kind_vtable_ctors::coerce_unsized_info(),
        _dep_kind_vtable_ctors::typeck(),
        _dep_kind_vtable_ctors::used_trait_imports(),
        _dep_kind_vtable_ctors::coherent_trait(),
        _dep_kind_vtable_ctors::mir_borrowck(),
        _dep_kind_vtable_ctors::crate_inherent_impls(),
        _dep_kind_vtable_ctors::crate_inherent_impls_validity_check(),
        _dep_kind_vtable_ctors::crate_inherent_impls_overlap_check(),
        _dep_kind_vtable_ctors::orphan_check_impl(),
        _dep_kind_vtable_ctors::mir_callgraph_cyclic(),
        _dep_kind_vtable_ctors::mir_inliner_callees(),
        _dep_kind_vtable_ctors::tag_for_variant(),
        _dep_kind_vtable_ctors::eval_to_allocation_raw(),
        _dep_kind_vtable_ctors::eval_static_initializer(),
        _dep_kind_vtable_ctors::eval_to_const_value_raw(),
        _dep_kind_vtable_ctors::eval_to_valtree(),
        _dep_kind_vtable_ctors::valtree_to_const_val(),
        _dep_kind_vtable_ctors::lit_to_const(),
        _dep_kind_vtable_ctors::check_match(),
        _dep_kind_vtable_ctors::effective_visibilities(),
        _dep_kind_vtable_ctors::check_private_in_public(),
        _dep_kind_vtable_ctors::reachable_set(),
        _dep_kind_vtable_ctors::region_scope_tree(),
        _dep_kind_vtable_ctors::mir_shims(),
        _dep_kind_vtable_ctors::symbol_name(),
        _dep_kind_vtable_ctors::def_kind(),
        _dep_kind_vtable_ctors::def_span(),
        _dep_kind_vtable_ctors::def_ident_span(),
        _dep_kind_vtable_ctors::ty_span(),
        _dep_kind_vtable_ctors::lookup_stability(),
        _dep_kind_vtable_ctors::lookup_const_stability(),
        _dep_kind_vtable_ctors::lookup_default_body_stability(),
        _dep_kind_vtable_ctors::should_inherit_track_caller(),
        _dep_kind_vtable_ctors::inherited_align(),
        _dep_kind_vtable_ctors::lookup_deprecation_entry(),
        _dep_kind_vtable_ctors::is_doc_hidden(),
        _dep_kind_vtable_ctors::is_doc_notable_trait(),
        _dep_kind_vtable_ctors::attrs_for_def(),
        _dep_kind_vtable_ctors::codegen_fn_attrs(),
        _dep_kind_vtable_ctors::asm_target_features(),
        _dep_kind_vtable_ctors::fn_arg_idents(),
        _dep_kind_vtable_ctors::rendered_const(),
        _dep_kind_vtable_ctors::rendered_precise_capturing_args(),
        _dep_kind_vtable_ctors::impl_parent(),
        _dep_kind_vtable_ctors::is_mir_available(),
        _dep_kind_vtable_ctors::own_existential_vtable_entries(),
        _dep_kind_vtable_ctors::vtable_entries(),
        _dep_kind_vtable_ctors::first_method_vtable_slot(),
        _dep_kind_vtable_ctors::supertrait_vtable_slot(),
        _dep_kind_vtable_ctors::vtable_allocation(),
        _dep_kind_vtable_ctors::codegen_select_candidate(),
        _dep_kind_vtable_ctors::all_local_trait_impls(),
        _dep_kind_vtable_ctors::local_trait_impls(),
        _dep_kind_vtable_ctors::trait_impls_of(),
        _dep_kind_vtable_ctors::specialization_graph_of(),
        _dep_kind_vtable_ctors::dyn_compatibility_violations(),
        _dep_kind_vtable_ctors::is_dyn_compatible(),
        _dep_kind_vtable_ctors::param_env(),
        _dep_kind_vtable_ctors::typing_env_normalized_for_post_analysis(),
        _dep_kind_vtable_ctors::is_copy_raw(),
        _dep_kind_vtable_ctors::is_use_cloned_raw(),
        _dep_kind_vtable_ctors::is_sized_raw(),
        _dep_kind_vtable_ctors::is_freeze_raw(),
        _dep_kind_vtable_ctors::is_unsafe_unpin_raw(),
        _dep_kind_vtable_ctors::is_unpin_raw(),
        _dep_kind_vtable_ctors::is_async_drop_raw(),
        _dep_kind_vtable_ctors::needs_drop_raw(),
        _dep_kind_vtable_ctors::needs_async_drop_raw(),
        _dep_kind_vtable_ctors::has_significant_drop_raw(),
        _dep_kind_vtable_ctors::has_structural_eq_impl(),
        _dep_kind_vtable_ctors::adt_drop_tys(),
        _dep_kind_vtable_ctors::adt_async_drop_tys(),
        _dep_kind_vtable_ctors::adt_significant_drop_tys(),
        _dep_kind_vtable_ctors::list_significant_drop_tys(),
        _dep_kind_vtable_ctors::layout_of(),
        _dep_kind_vtable_ctors::fn_abi_of_fn_ptr(),
        _dep_kind_vtable_ctors::fn_abi_of_instance(),
        _dep_kind_vtable_ctors::dylib_dependency_formats(),
        _dep_kind_vtable_ctors::dependency_formats(),
        _dep_kind_vtable_ctors::is_compiler_builtins(),
        _dep_kind_vtable_ctors::has_global_allocator(),
        _dep_kind_vtable_ctors::has_alloc_error_handler(),
        _dep_kind_vtable_ctors::has_panic_handler(),
        _dep_kind_vtable_ctors::is_profiler_runtime(),
        _dep_kind_vtable_ctors::has_ffi_unwind_calls(),
        _dep_kind_vtable_ctors::required_panic_strategy(),
        _dep_kind_vtable_ctors::panic_in_drop_strategy(),
        _dep_kind_vtable_ctors::is_no_builtins(),
        _dep_kind_vtable_ctors::symbol_mangling_version(),
        _dep_kind_vtable_ctors::extern_crate(),
        _dep_kind_vtable_ctors::specialization_enabled_in(),
        _dep_kind_vtable_ctors::specializes(),
        _dep_kind_vtable_ctors::in_scope_traits_map(),
        _dep_kind_vtable_ctors::defaultness(),
        _dep_kind_vtable_ctors::default_field(),
        _dep_kind_vtable_ctors::check_well_formed(),
        _dep_kind_vtable_ctors::enforce_impl_non_lifetime_params_are_constrained(),
        _dep_kind_vtable_ctors::reachable_non_generics(),
        _dep_kind_vtable_ctors::is_reachable_non_generic(),
        _dep_kind_vtable_ctors::is_unreachable_local_definition(),
        _dep_kind_vtable_ctors::upstream_monomorphizations(),
        _dep_kind_vtable_ctors::upstream_monomorphizations_for(),
        _dep_kind_vtable_ctors::upstream_drop_glue_for(),
        _dep_kind_vtable_ctors::upstream_async_drop_glue_for(),
        _dep_kind_vtable_ctors::foreign_modules(),
        _dep_kind_vtable_ctors::clashing_extern_declarations(),
        _dep_kind_vtable_ctors::entry_fn(),
        _dep_kind_vtable_ctors::proc_macro_decls_static(),
        _dep_kind_vtable_ctors::crate_hash(),
        _dep_kind_vtable_ctors::crate_host_hash(),
        _dep_kind_vtable_ctors::extra_filename(),
        _dep_kind_vtable_ctors::crate_extern_paths(),
        _dep_kind_vtable_ctors::implementations_of_trait(),
        _dep_kind_vtable_ctors::crate_incoherent_impls(),
        _dep_kind_vtable_ctors::native_library(),
        _dep_kind_vtable_ctors::inherit_sig_for_delegation_item(),
        _dep_kind_vtable_ctors::resolve_bound_vars(),
        _dep_kind_vtable_ctors::named_variable_map(),
        _dep_kind_vtable_ctors::is_late_bound_map(),
        _dep_kind_vtable_ctors::object_lifetime_default(),
        _dep_kind_vtable_ctors::late_bound_vars_map(),
        _dep_kind_vtable_ctors::opaque_captured_lifetimes(),
        _dep_kind_vtable_ctors::visibility(),
        _dep_kind_vtable_ctors::inhabited_predicate_adt(),
        _dep_kind_vtable_ctors::inhabited_predicate_type(),
        _dep_kind_vtable_ctors::crate_dep_kind(),
        _dep_kind_vtable_ctors::crate_name(),
        _dep_kind_vtable_ctors::module_children(),
        _dep_kind_vtable_ctors::num_extern_def_ids(),
        _dep_kind_vtable_ctors::lib_features(),
        _dep_kind_vtable_ctors::stability_implications(),
        _dep_kind_vtable_ctors::intrinsic_raw(),
        _dep_kind_vtable_ctors::get_lang_items(),
        _dep_kind_vtable_ctors::all_diagnostic_items(),
        _dep_kind_vtable_ctors::defined_lang_items(),
        _dep_kind_vtable_ctors::diagnostic_items(),
        _dep_kind_vtable_ctors::missing_lang_items(),
        _dep_kind_vtable_ctors::visible_parent_map(),
        _dep_kind_vtable_ctors::trimmed_def_paths(),
        _dep_kind_vtable_ctors::missing_extern_crate_item(),
        _dep_kind_vtable_ctors::used_crate_source(),
        _dep_kind_vtable_ctors::debugger_visualizers(),
        _dep_kind_vtable_ctors::postorder_cnums(),
        _dep_kind_vtable_ctors::is_private_dep(),
        _dep_kind_vtable_ctors::allocator_kind(),
        _dep_kind_vtable_ctors::alloc_error_handler_kind(),
        _dep_kind_vtable_ctors::upvars_mentioned(),
        _dep_kind_vtable_ctors::crates(),
        _dep_kind_vtable_ctors::used_crates(),
        _dep_kind_vtable_ctors::duplicate_crate_names(),
        _dep_kind_vtable_ctors::traits(),
        _dep_kind_vtable_ctors::trait_impls_in_crate(),
        _dep_kind_vtable_ctors::stable_order_of_exportable_impls(),
        _dep_kind_vtable_ctors::exportable_items(),
        _dep_kind_vtable_ctors::exported_non_generic_symbols(),
        _dep_kind_vtable_ctors::exported_generic_symbols(),
        _dep_kind_vtable_ctors::collect_and_partition_mono_items(),
        _dep_kind_vtable_ctors::is_codegened_item(),
        _dep_kind_vtable_ctors::codegen_unit(),
        _dep_kind_vtable_ctors::backend_optimization_level(),
        _dep_kind_vtable_ctors::output_filenames(),
        _dep_kind_vtable_ctors::normalize_canonicalized_projection(),
        _dep_kind_vtable_ctors::normalize_canonicalized_free_alias(),
        _dep_kind_vtable_ctors::normalize_canonicalized_inherent_projection(),
        _dep_kind_vtable_ctors::try_normalize_generic_arg_after_erasing_regions(),
        _dep_kind_vtable_ctors::implied_outlives_bounds(),
        _dep_kind_vtable_ctors::dropck_outlives(),
        _dep_kind_vtable_ctors::evaluate_obligation(),
        _dep_kind_vtable_ctors::type_op_ascribe_user_type(),
        _dep_kind_vtable_ctors::type_op_prove_predicate(),
        _dep_kind_vtable_ctors::type_op_normalize_ty(),
        _dep_kind_vtable_ctors::type_op_normalize_clause(),
        _dep_kind_vtable_ctors::type_op_normalize_poly_fn_sig(),
        _dep_kind_vtable_ctors::type_op_normalize_fn_sig(),
        _dep_kind_vtable_ctors::instantiate_and_check_impossible_predicates(),
        _dep_kind_vtable_ctors::is_impossible_associated_item(),
        _dep_kind_vtable_ctors::method_autoderef_steps(),
        _dep_kind_vtable_ctors::evaluate_root_goal_for_proof_tree_raw(),
        _dep_kind_vtable_ctors::rust_target_features(),
        _dep_kind_vtable_ctors::implied_target_features(),
        _dep_kind_vtable_ctors::features_query(),
        _dep_kind_vtable_ctors::crate_for_resolver(),
        _dep_kind_vtable_ctors::resolve_instance_raw(),
        _dep_kind_vtable_ctors::reveal_opaque_types_in_bounds(),
        _dep_kind_vtable_ctors::limits(),
        _dep_kind_vtable_ctors::diagnostic_hir_wf_check(),
        _dep_kind_vtable_ctors::global_backend_features(),
        _dep_kind_vtable_ctors::check_validity_requirement(),
        _dep_kind_vtable_ctors::compare_impl_item(),
        _dep_kind_vtable_ctors::deduced_param_attrs(),
        _dep_kind_vtable_ctors::doc_link_resolutions(),
        _dep_kind_vtable_ctors::doc_link_traits_in_scope(),
        _dep_kind_vtable_ctors::stripped_cfg_items(),
        _dep_kind_vtable_ctors::generics_require_sized_self(),
        _dep_kind_vtable_ctors::cross_crate_inlinable(),
        _dep_kind_vtable_ctors::check_mono_item(),
        _dep_kind_vtable_ctors::skip_move_check_fns(),
        _dep_kind_vtable_ctors::items_of_instance(),
        _dep_kind_vtable_ctors::size_estimate(),
        _dep_kind_vtable_ctors::anon_const_kind(),
        _dep_kind_vtable_ctors::trivial_const(),
        _dep_kind_vtable_ctors::sanitizer_settings_for(),
        _dep_kind_vtable_ctors::check_externally_implementable_items(),
        _dep_kind_vtable_ctors::externally_implementable_items(),
        _dep_kind_vtable_ctors::is_rhs_type_const()]rustc_middle::make_dep_kind_array!(_dep_kind_vtable_ctors);
160    arena.alloc_from_iter(dep_kind_vtables)
161}