rust/compiler
bors 0e517d38ad Auto merge of #138522 - osiewicz:shared-generics-respect-visibility, r=bjorn3
shared-generics: Do not share instantiations that contain local-only types

In Zed shared-generics loading takes up a significant chunk of time in incremental build, as rustc deserializes rmeta of all dependencies of a crate. I've recently realized that shared-generics includes all instantiations of some_generic_function in the following snippet:
```rs
pub fn some_generic_function(_: impl Fn()) {}

pub fn non_generic_function() {
	some_generic_function(|| {});
	some_generic_function(|| {});
	some_generic_function(|| {});
	some_generic_function(|| {});
	some_generic_function(|| {});
	some_generic_function(|| {});
	some_generic_function(|| {});
}
```
even though none of these instantiations can actually be created from outside of `non_generic_function`. This is a dummy example, but we do rely on invoking callbacks with FnOnce a lot in our codebase.

This PR makes shared-generics account for visibilities of generic arguments; an item is only considered for exporting if it is reachable from the outside or if all of it's arguments are visible outside of the local crate.

This PR reduces incremental build time for Zed (touch editor.rs scenario) from 12.4s to 10.4s. I'd love to see a perf run if possible; per my checks this PR does not incur new instantiations in downstream crates, so if there'd be perf regressions, I'd expect them to come from newly-introduced visibility checks.
2025-05-01 11:57:11 +00:00
..
rustc Revert "Use workspace lints for crates in compiler/ #138084" 2025-03-10 18:12:47 +08:00
rustc_abi Initial UnsafePinned/UnsafeUnpin impl [Part 1: Libs] 2025-04-13 01:11:04 -04:00
rustc_arena Introduce Arena::try_alloc_from_iter. 2025-04-19 01:13:18 +00:00
rustc_ast ast: Remove token visiting from AST visitor 2025-04-30 10:36:03 +03:00
rustc_ast_ir Use -Wunused_crate_dependencies for compiler crates. 2025-03-20 08:59:43 +11:00
rustc_ast_lowering Auto merge of #121909 - Zoxc:drop-ast-task, r=petrochenkov 2025-04-30 23:57:22 +00:00
rustc_ast_passes Make #![feature(let_chains)] bootstrap conditional in compiler/ 2025-04-23 16:40:30 +02:00
rustc_ast_pretty Rollup merge of #140312 - nnethercote:DelimArgs-spacing, r=petrochenkov 2025-04-30 10:18:26 +02:00
rustc_attr_data_structures Make #![feature(let_chains)] bootstrap conditional in compiler/ 2025-04-23 16:40:30 +02:00
rustc_attr_parsing Simplify LazyAttrTokenStream. 2025-04-30 07:10:56 +10:00
rustc_baked_icu_data Add unreachable_pub to RUSTC_LINT_FLAGS for compiler/ crates. 2025-03-11 13:14:21 +11:00
rustc_borrowck AsyncDrop implementation using shim codegen of async_drop_in_place::{closure}, scoped async drop added. 2025-04-28 16:23:13 +07:00
rustc_builtin_macros Rollup merge of #140312 - nnethercote:DelimArgs-spacing, r=petrochenkov 2025-04-30 10:18:26 +02:00
rustc_codegen_cranelift Rollup merge of #134232 - bjorn3:naked_asm_improvements, r=wesleywiser 2025-04-30 17:27:57 +02:00
rustc_codegen_gcc Rollup merge of #134232 - bjorn3:naked_asm_improvements, r=wesleywiser 2025-04-30 17:27:57 +02:00
rustc_codegen_llvm Rollup merge of #134232 - bjorn3:naked_asm_improvements, r=wesleywiser 2025-04-30 17:27:57 +02:00
rustc_codegen_ssa Auto merge of #138522 - osiewicz:shared-generics-respect-visibility, r=bjorn3 2025-05-01 11:57:11 +00:00
rustc_const_eval Rollup merge of #140439 - RalfJung:miri-algebraic-float-nondet, r=oli-obk 2025-04-30 10:18:28 +02:00
rustc_data_structures Auto merge of #140145 - Zoxc:job-server-proxy, r=SparrowLii 2025-05-01 04:11:52 +00:00
rustc_driver Remove recursion_limit increases. 2025-04-02 16:25:27 +11:00
rustc_driver_impl Make #![feature(let_chains)] bootstrap conditional in compiler/ 2025-04-23 16:40:30 +02:00
rustc_error_codes stabilize naked_functions 2025-04-20 11:18:38 +02:00
rustc_error_messages update cfgs 2025-04-09 12:29:59 +01:00
rustc_errors Make #![feature(let_chains)] bootstrap conditional in compiler/ 2025-04-23 16:40:30 +02:00
rustc_expand Rollup merge of #140450 - petrochenkov:vistok, r=nnethercote 2025-04-30 17:28:00 +02:00
rustc_feature Rollup merge of #140323 - tgross35:cfg-unstable-float, r=Urgau 2025-04-28 23:29:17 +00:00
rustc_fluent_macro Replace proc_macro::SourceFile by Span::{file, local_file}. 2025-04-11 15:07:08 +02:00
rustc_fs_util Retry if creating temp fails with access denied 2025-04-25 11:28:36 +00:00
rustc_graphviz Remove #![warn(unreachable_pub)] from all compiler/ crates. 2025-03-11 13:14:21 +11:00
rustc_hashes Revert "Use workspace lints for crates in compiler/ #138084" 2025-03-10 18:12:47 +08:00
rustc_hir Auto merge of #127516 - nnethercote:simplify-LazyAttrTokenStream, r=petrochenkov 2025-04-30 00:09:21 +00:00
rustc_hir_analysis Rollup merge of #139909 - oli-obk:or-patterns, r=BoxyUwU 2025-04-29 12:28:22 -04:00
rustc_hir_pretty Rollup merge of #140312 - nnethercote:DelimArgs-spacing, r=petrochenkov 2025-04-30 10:18:26 +02:00
rustc_hir_typeck Rollup merge of #140468 - BoxyUwU:normalization_confusings2, r=lcnr 2025-04-30 22:36:41 +02:00
rustc_incremental Replace infallible name_or_empty methods with fallible name methods. 2025-04-17 09:50:52 +10:00
rustc_index Add copy_within to IndexSlice 2025-04-15 10:44:28 -04:00
rustc_index_macros In rustc_mir_tranform, iterate over index newtypes instead of ints 2025-04-12 11:53:07 +00:00
rustc_infer Rollup merge of #140249 - BoxyUwU:remove_weak_alias_terminology, r=oli-obk 2025-04-28 13:30:45 +02:00
rustc_interface Auto merge of #140145 - Zoxc:job-server-proxy, r=SparrowLii 2025-05-01 04:11:52 +00:00
rustc_lexer Replace rustc_lexer/unescape with rustc-literal-escaper crate 2025-04-04 14:44:45 +02:00
rustc_lint Rollup merge of #140090 - Urgau:snake_case-fn-var, r=petrochenkov 2025-04-30 17:27:58 +02:00
rustc_lint_defs Update lint-docs to default to Rust 2024 2025-04-26 14:08:58 -07:00
rustc_llvm Rollup merge of #140400 - durin42:llvm-21-getguid, r=cuviper 2025-04-29 12:28:24 -04:00
rustc_log Use -Wunused_crate_dependencies for compiler crates. 2025-03-20 08:59:43 +11:00
rustc_macros Rename rustc_query_append! to rustc_with_all_queries! 2025-04-29 20:48:51 +10:00
rustc_metadata Rollup merge of #140086 - ChrisDenton:backoff, r=petrochenkov 2025-04-26 07:13:07 +02:00
rustc_middle Auto merge of #140145 - Zoxc:job-server-proxy, r=SparrowLii 2025-05-01 04:11:52 +00:00
rustc_mir_build Rollup merge of #140022 - dianne:box-deref-pats, r=Nadrieril 2025-04-28 23:29:15 +00:00
rustc_mir_dataflow AsyncDrop implementation using shim codegen of async_drop_in_place::{closure}, scoped async drop added. 2025-04-28 16:23:13 +07:00
rustc_mir_transform Rollup merge of #140458 - azhogin:azhogin/async-drop-fix-dropped-tuple-ice, r=oli-obk 2025-04-30 22:36:39 +02:00
rustc_monomorphize AsyncDrop implementation using shim codegen of async_drop_in_place::{closure}, scoped async drop added. 2025-04-28 16:23:13 +07:00
rustc_next_trait_solver Treat ManuallyDrop as ~const Destruct 2025-04-29 10:39:54 +00:00
rustc_parse Rollup merge of #140494 - ehuss:document-restrictions, r=traviscross,SparrowLii 2025-04-30 22:36:44 +02:00
rustc_parse_format Update rustc-literal-escaper version to 0.0.2 2025-04-04 22:26:10 +02:00
rustc_passes Auto merge of #123948 - azhogin:azhogin/async-drop, r=oli-obk 2025-04-28 14:14:26 +00:00
rustc_pattern_analysis Make #![feature(let_chains)] bootstrap conditional in compiler/ 2025-04-23 16:40:30 +02:00
rustc_privacy Rollup merge of #140249 - BoxyUwU:remove_weak_alias_terminology, r=oli-obk 2025-04-28 13:30:45 +02:00
rustc_query_impl Auto merge of #140145 - Zoxc:job-server-proxy, r=SparrowLii 2025-05-01 04:11:52 +00:00
rustc_query_system Add some comments 2025-04-29 12:04:33 +02:00
rustc_resolve Auto merge of #127516 - nnethercote:simplify-LazyAttrTokenStream, r=petrochenkov 2025-04-30 00:09:21 +00:00
rustc_sanitizers Make #![feature(let_chains)] bootstrap conditional in compiler/ 2025-04-23 16:40:30 +02:00
rustc_serialize Zero the buffer passed from write_with 2025-04-25 07:14:27 +02:00
rustc_session Rollup merge of #140323 - tgross35:cfg-unstable-float, r=Urgau 2025-04-28 23:29:17 +00:00
rustc_smir Rollup merge of #139909 - oli-obk:or-patterns, r=BoxyUwU 2025-04-29 12:28:22 -04:00
rustc_span Rollup merge of #140323 - tgross35:cfg-unstable-float, r=Urgau 2025-04-28 23:29:17 +00:00
rustc_symbol_mangling Rollup merge of #139909 - oli-obk:or-patterns, r=BoxyUwU 2025-04-29 12:28:22 -04:00
rustc_target Replace the \01__gnu_mcount_nc to LLVM intrinsic for additional ARM targets 2025-04-29 08:15:23 +02:00
rustc_trait_selection Rollup merge of #140468 - BoxyUwU:normalization_confusings2, r=lcnr 2025-04-30 22:36:41 +02:00
rustc_traits Remove weak alias terminology 2025-04-24 11:59:20 +01:00
rustc_transmute transmutability: ensure_sufficient_stack when answering query 2025-04-30 12:06:14 +02:00
rustc_ty_utils Rollup merge of #139909 - oli-obk:or-patterns, r=BoxyUwU 2025-04-29 12:28:22 -04:00
rustc_type_ir canonical no type foldable :< 2025-04-29 23:17:31 +00:00
rustc_type_ir_macros Split TypeFolder and FallibleTypeFolder 2025-04-15 18:30:35 +00:00
stable_mir let rustc_smir host stable_mir for refactoring 2025-04-05 18:23:07 +08:00