rust/compiler
Matthias Krüger 076c047fe1
Rollup merge of #135314 - compiler-errors:eagerly-mono-closures, r=wesleywiser
Eagerly collect mono items for non-generic closures

This allows users to use `-Zprint-mono-items=eager` to eagerly monomorphize closures and coroutine bodies, in case they want to inspect the LLVM or ASM for those items.

`-Zprint-mono-items`, which used to be called `-Zprint-trans-items`, was originally added in https://github.com/rust-lang/rust/pull/30900:

> Eager mode is meant to be used in conjunction with incremental compilation
> where a stable set of translation items is more important than a minimal
> one. Thus, eager mode will instantiate drop-glue for every drop-able type
> in the crate, even of no drop call for that type exists (yet). It will
> also instantiate default implementations of trait methods, something that
> otherwise is only done on demand.

Although it remains an unstable option, its purpose has somewhat expanded since then, and as far as I can tell it's generally useful for cases when you want to monomorphize as many items as possible, even if they're unreachable. Specifically, it's useful for debugging since you can look at the codegen'd body of a function, since we don't emit items that are not reachable in monomorphization.

And even more specifically, it would be very to monomorphize the coroutine body of an async fn, since those you can't easily call those without a runtime. This PR enables this usecase since we now monomorphize `DefKind::Closure`.
2025-01-11 18:13:47 +01:00
..
rustc
rustc_abi exclude unsizable tail from randomization seed calculation 2025-01-10 02:22:57 +01:00
rustc_arena
rustc_ast Auto merge of #135268 - pietroalbini:pa-bump-stage0, r=Mark-Simulacrum 2025-01-09 13:33:16 +00:00
rustc_ast_ir
rustc_ast_lowering Rename PatKind::Lit to Expr 2025-01-08 07:34:59 +00:00
rustc_ast_passes update cfg(bootstrap) 2025-01-08 21:26:39 +01:00
rustc_ast_pretty Rename PatKind::Lit to Expr 2025-01-08 07:34:59 +00:00
rustc_attr_data_structures mir_transform: implement forced inlining 2025-01-10 18:37:54 +00:00
rustc_attr_parsing Re-export more rustc_span::symbol things from rustc_span. 2024-12-18 13:38:53 +11:00
rustc_baked_icu_data
rustc_borrowck rename BitSet to DenseBitSet 2025-01-11 11:34:01 +00:00
rustc_builtin_macros Rollup merge of #134877 - DavisRayM:129966-format-string-help-message, r=estebank 2025-01-01 16:35:30 +11:00
rustc_codegen_cranelift Merge commit 'e39eacd2d415803ef82de3b6a314e4f2d0fbc4dc' into sync_cg_clif-2025-01-10 2025-01-10 09:02:07 +00:00
rustc_codegen_gcc migrate rustc_codegen_gcc to the DenseBitSet name 2025-01-11 11:34:03 +00:00
rustc_codegen_llvm Rollup merge of #135205 - lqd:bitsets, r=Mark-Simulacrum 2025-01-11 18:13:47 +01:00
rustc_codegen_ssa Rollup merge of #135205 - lqd:bitsets, r=Mark-Simulacrum 2025-01-11 18:13:47 +01:00
rustc_const_eval rename BitSet to DenseBitSet 2025-01-11 11:34:01 +00:00
rustc_data_structures rename BitSet to DenseBitSet 2025-01-11 11:34:01 +00:00
rustc_driver
rustc_driver_impl add deprecated and do nothing flag to options table 2025-01-06 15:38:02 +03:00
rustc_error_codes Rewrite the error-code docs for coverage attributes [E0788] 2024-12-25 19:23:48 +11:00
rustc_error_messages Convert some Into impls into From impls 2024-12-31 01:56:33 +00:00
rustc_errors Convert some Into impls into From impls 2024-12-31 01:56:33 +00:00
rustc_expand Rollup merge of #135247 - tgross35:stdlib-sym-list, r=oli-obk 2025-01-09 09:05:09 +01:00
rustc_feature mir_transform: implement forced inlining 2025-01-10 18:37:54 +00:00
rustc_fluent_macro
rustc_fs_util
rustc_graphviz
rustc_hir Auto merge of #135268 - pietroalbini:pa-bump-stage0, r=Mark-Simulacrum 2025-01-09 13:33:16 +00:00
rustc_hir_analysis rename BitSet to DenseBitSet 2025-01-11 11:34:01 +00:00
rustc_hir_pretty Rename PatKind::Lit to Expr 2025-01-08 07:34:59 +00:00
rustc_hir_typeck mir_transform: implement forced inlining 2025-01-10 18:37:54 +00:00
rustc_incremental turn hir::ItemKind::Fn into a named-field variant 2025-01-04 11:35:31 +01:00
rustc_index document the use-cases of DenseBitSet a bit more 2025-01-11 11:34:03 +00:00
rustc_index_macros update rustc_index_macros feature handling 2024-12-19 20:32:12 +03:00
rustc_infer Simplify declared_generic_bounds_from_env 2025-01-02 01:30:55 +00:00
rustc_interface Rollup merge of #134030 - folkertdev:min-fn-align, r=workingjubilee 2025-01-11 18:13:45 +01:00
rustc_lexer Add test to check unicode identifier version 2024-12-09 06:23:59 -08:00
rustc_lint Auto merge of #135268 - pietroalbini:pa-bump-stage0, r=Mark-Simulacrum 2025-01-09 13:33:16 +00:00
rustc_lint_defs Mention unnameable_types in unreachable_pub documentation. 2025-01-05 17:13:33 -08:00
rustc_llvm llvm: Ignore error value that is always false 2025-01-07 01:02:22 +00:00
rustc_log Avoid naming variables str 2025-01-07 14:30:02 +02:00
rustc_macros Avoid naming variables str 2025-01-07 14:30:02 +02:00
rustc_metadata rename BitSet to DenseBitSet 2025-01-11 11:34:01 +00:00
rustc_middle Rollup merge of #135314 - compiler-errors:eagerly-mono-closures, r=wesleywiser 2025-01-11 18:13:47 +01:00
rustc_mir_build review comments 2025-01-11 01:23:37 +00:00
rustc_mir_dataflow rename BitSet to DenseBitSet 2025-01-11 11:34:01 +00:00
rustc_mir_transform rename BitSet to DenseBitSet 2025-01-11 11:34:01 +00:00
rustc_monomorphize Rollup merge of #135314 - compiler-errors:eagerly-mono-closures, r=wesleywiser 2025-01-11 18:13:47 +01:00
rustc_next_trait_solver Implement const Destruct in old solver 2025-01-08 18:14:58 +00:00
rustc_parse Auto merge of #135268 - pietroalbini:pa-bump-stage0, r=Mark-Simulacrum 2025-01-09 13:33:16 +00:00
rustc_parse_format add suggestion for wrongly ordered format parameters 2024-12-30 06:14:26 -08:00
rustc_passes mir_transform: implement forced inlining 2025-01-10 18:37:54 +00:00
rustc_pattern_analysis rename BitSet to DenseBitSet 2025-01-11 11:34:01 +00:00
rustc_privacy turn hir::ItemKind::Fn into a named-field variant 2025-01-04 11:35:31 +01:00
rustc_query_impl Rename ty_def_id so people will stop using it by accident 2024-12-13 16:36:38 +00:00
rustc_query_system Re-export more rustc_span::symbol things from rustc_span. 2024-12-18 13:38:53 +11:00
rustc_resolve Auto merge of #135268 - pietroalbini:pa-bump-stage0, r=Mark-Simulacrum 2025-01-09 13:33:16 +00:00
rustc_sanitizers Eliminate an unnecessary Symbol::to_string; use as_str 2025-01-07 14:24:47 +02:00
rustc_serialize
rustc_session Rollup merge of #134030 - folkertdev:min-fn-align, r=workingjubilee 2025-01-11 18:13:45 +01:00
rustc_smir Auto merge of #134625 - compiler-errors:unsafe-binders-ty, r=oli-obk 2024-12-24 00:51:51 +00:00
rustc_span mir_transform: implement forced inlining 2025-01-10 18:37:54 +00:00
rustc_symbol_mangling Account for identity substituted items in symbol mangling 2025-01-09 13:55:40 +01:00
rustc_target Rollup merge of #134609 - tbu-:pr_win7_gnu, r=davidtwco 2025-01-09 06:02:40 +01:00
rustc_trait_selection mir_transform: implement forced inlining 2025-01-10 18:37:54 +00:00
rustc_traits
rustc_transmute add comment explaining why ty_and_layout_field is not used 2024-12-18 11:01:54 +01:00
rustc_ty_utils rename BitSet to DenseBitSet 2025-01-11 11:34:01 +00:00
rustc_type_ir rename BitSet to DenseBitSet 2025-01-11 11:34:01 +00:00
rustc_type_ir_macros
stable_mir make no-variant types a dedicated Variants variant 2024-12-18 11:01:54 +01:00