1
Fork 0
rust/compiler
Matthias Krüger 5e04f513cd
Rollup merge of #92142 - wesleywiser:fix_codecoverage_partitioning, r=tmandry
[code coverage] Fix missing dead code in modules that are never called

The issue here is that the logic used to determine which CGU to put the dead function stubs in doesn't handle cases where a module is never assigned to a CGU (which is what happens when all of the code in the module is dead).

The partitioning logic also caused issues in #85461 where inline functions were duplicated into multiple CGUs resulting in duplicate symbols.

This commit fixes the issue by removing the complex logic used to assign dead code stubs to CGUs and replaces it with a much simpler model: we pick one CGU to hold all the dead code stubs. We pick a CGU which has exported items which increases the likelihood the linker won't throw away our dead functions and we pick the smallest to minimize the impact on compilation times for crates with very large CGUs.

Fixes #91661
Fixes #86177
Fixes #85718
Fixes #79622

r? ```@tmandry```
cc ```@richkadel```

This PR is not urgent so please don't let it interrupt your holidays! 🎄 🎁
2022-01-13 08:11:20 +01:00
..
rustc Remove useless #[global_allocator] from rustc and rustdoc. 2021-12-23 17:23:21 +11:00
rustc_apfloat Stabilize iter::zip. 2021-12-14 18:50:31 -04:00
rustc_arena Add some comments. 2021-11-19 07:52:59 +11:00
rustc_ast Rollup merge of #92357 - GuillaumeGomez:fix-doc-comment-backline-removal, r=camelid 2022-01-10 11:03:05 +01:00
rustc_ast_lowering Rollup merge of #91907 - lcnr:const-arg-infer, r=BoxyUwU 2022-01-04 21:23:06 +01:00
rustc_ast_passes Move PatKind::Lit checking from ast_validation to ast lowering 2022-01-01 15:10:43 -05:00
rustc_ast_pretty Rollup merge of #92336 - dtolnay:printstateself, r=michaelwoerister 2022-01-07 20:20:56 -08:00
rustc_attr Remove unnecessary sigils around Symbol::as_str() calls. 2021-12-15 17:32:14 +11:00
rustc_borrowck Store a Symbol instead of an Ident in VariantDef/FieldDef 2022-01-11 10:16:22 -05:00
rustc_builtin_macros Update AsmArgs field visibility for rustfmt 2022-01-10 22:38:15 -05:00
rustc_codegen_cranelift Store a Symbol instead of an Ident in VariantDef/FieldDef 2022-01-11 10:16:22 -05:00
rustc_codegen_gcc Store a Symbol instead of an Ident in VariantDef/FieldDef 2022-01-11 10:16:22 -05:00
rustc_codegen_llvm Rollup merge of #92142 - wesleywiser:fix_codecoverage_partitioning, r=tmandry 2022-01-13 08:11:20 +01:00
rustc_codegen_ssa Rollup merge of #90001 - Fearyncess:master, r=alexcrichton 2022-01-13 08:11:16 +01:00
rustc_const_eval Rollup merge of #92432 - fee1-dead:constck-impl-constness, r=oli-obk 2022-01-12 07:12:06 +01:00
rustc_data_structures Auto merge of #92070 - rukai:replace_vec_into_iter_with_array_into_iter, r=Mark-Simulacrum 2022-01-11 14:23:24 +00:00
rustc_driver Rollup merge of #92504 - dtolnay:wall, r=jackh726 2022-01-06 23:15:17 +01:00
rustc_error_codes docs(error-codes): Add long error explanation for E0227 2021-12-28 15:46:20 +03:00
rustc_errors Auto merge of #92070 - rukai:replace_vec_into_iter_with_array_into_iter, r=Mark-Simulacrum 2022-01-11 14:23:24 +00:00
rustc_expand Auto merge of #92070 - rukai:replace_vec_into_iter_with_array_into_iter, r=Mark-Simulacrum 2022-01-11 14:23:24 +00:00
rustc_feature Stabilize destructuring_assignment 2021-12-14 22:38:51 -05:00
rustc_fs_util
rustc_graphviz eplace usages of vec![].into_iter with [].into_iter 2022-01-09 14:09:25 +11:00
rustc_hir Rollup merge of #92702 - ehuss:clean-lang_items-extract, r=petrochenkov 2022-01-10 11:03:11 +01:00
rustc_hir_pretty Rollup merge of #91907 - lcnr:const-arg-infer, r=BoxyUwU 2022-01-04 21:23:06 +01:00
rustc_incremental eplace usages of vec![].into_iter with [].into_iter 2022-01-09 14:09:25 +11:00
rustc_index Introduce IntervalSet 2021-12-30 22:33:44 -05:00
rustc_infer Rollup merge of #92006 - oli-obk:welcome_opaque_types_into_the_fold, r=nikomatsakis 2022-01-13 08:11:19 +01:00
rustc_interface ast: Always keep a NodeId in ast::Crate 2022-01-05 17:09:37 +08:00
rustc_lexer Auto merge of #91393 - Julian-Wollersberger:lexer_optimization, r=petrochenkov 2021-12-03 13:20:14 +00:00
rustc_lint Compute most of Public/Exported access level in rustc_resolve 2022-01-09 21:33:14 +00:00
rustc_lint_defs Rollup merge of #91770 - TaKO8Ki:suggest-adding-cfg-test, r=joshtriplett 2021-12-21 08:33:39 +01:00
rustc_llvm Rollup merge of #92559 - durin42:llvm-14-attributemask, r=nikic 2022-01-06 23:15:18 +01:00
rustc_log Make rustc_log doc test runnable 2022-01-03 22:31:56 -08:00
rustc_macros Rollup merge of #92011 - Aaron1011:decode-span, r=michaelwoerister 2022-01-03 14:44:16 +01:00
rustc_metadata Auto merge of #92169 - In-line:no-cache-selector-lrc, r=Mark-Simulacrum 2022-01-12 21:04:40 +00:00
rustc_middle Rollup merge of #92142 - wesleywiser:fix_codecoverage_partitioning, r=tmandry 2022-01-13 08:11:20 +01:00
rustc_mir_build Store a Symbol instead of an Ident in VariantDef/FieldDef 2022-01-11 10:16:22 -05:00
rustc_mir_dataflow Store a Symbol instead of an Ident in VariantDef/FieldDef 2022-01-11 10:16:22 -05:00
rustc_mir_transform Rollup merge of #92142 - wesleywiser:fix_codecoverage_partitioning, r=tmandry 2022-01-13 08:11:20 +01:00
rustc_monomorphize Rollup merge of #92142 - wesleywiser:fix_codecoverage_partitioning, r=tmandry 2022-01-13 08:11:20 +01:00
rustc_parse eplace usages of vec![].into_iter with [].into_iter 2022-01-09 14:09:25 +11:00
rustc_parse_format
rustc_passes Clean up lang_items::extract 2022-01-09 13:41:04 -08:00
rustc_plugin_impl replace dynamic library module with libloading 2021-12-06 12:03:47 -05:00
rustc_privacy Store a Symbol instead of an Ident in VariantDef/FieldDef 2022-01-11 10:16:22 -05:00
rustc_query_impl Some cleanup 2021-12-23 13:38:53 -05:00
rustc_query_system Auto merge of #92278 - Aaron1011:fix-fingerprint-caching, r=michaelwoerister 2022-01-10 00:26:07 +00:00
rustc_resolve Compute most of Public/Exported access level in rustc_resolve 2022-01-09 21:33:14 +00:00
rustc_save_analysis Add trait_item_def_id to AssocItem 2022-01-07 12:28:12 -08:00
rustc_serialize Do not use LEB128 for encoding u16 and i16 2021-12-28 09:29:08 +01:00
rustc_session sess/cg: re-introduce split dwarf kind 2022-01-06 09:32:42 +00:00
rustc_span Auto merge of #92012 - llogiq:repr-c-def-id, r=michaelwoerister 2022-01-11 08:09:00 +00:00
rustc_symbol_mangling Ensure that Fingerprint caching respects hashing configuration 2022-01-05 10:13:28 -05:00
rustc_target eplace usages of vec![].into_iter with [].into_iter 2022-01-09 14:09:25 +11:00
rustc_trait_selection Rollup merge of #92006 - oli-obk:welcome_opaque_types_into_the_fold, r=nikomatsakis 2022-01-13 08:11:19 +01:00
rustc_traits Add trait_item_def_id to AssocItem 2022-01-07 12:28:12 -08:00
rustc_ty_utils Add query to avoid name comparison in leaf_def 2022-01-07 13:31:36 -08:00
rustc_type_ir Fix HashStable implementation on InferTy 2021-12-13 20:36:17 -08:00
rustc_typeck Auto merge of #92533 - Aaron1011:variant-symbol, r=petrochenkov 2022-01-11 21:02:01 +00:00