rust/compiler
Wesley Wiser 1a0278e1d1 Work around missing code coverage data causing llvm-cov failures
If we do not add code coverage instrumentation to the `Body` of a
function, then when we go to generate the function record for it, we
won't write any data and this later causes llvm-cov to fail when
processing data for the entire coverage report.

I've identified two main cases where we do not currently add code
coverage instrumentation to the `Body` of a function:

  1. If the function has a single `BasicBlock` and it ends with a
     `TerminatorKind::Unreachable`.

  2. If the function is created using a proc macro of some kind.

For case 1, this typically not important as this most often occurs as
the result of function definitions that take or return uninhabited
types. These kinds of functions, by definition, cannot even be called so
they logically should not be counted in code coverage statistics.

For case 2, I haven't looked into this very much but I've noticed while
testing this patch that (other than functions which are covered by case
1) the skipped function coverage debug message is occasionally triggered
in large crate graphs by functions generated from a proc macro. This may
have something to do with weird spans being generated by the proc macro
but this is just a guess.

I think it's reasonable to land this change since currently, we fail to
generate *any* results from llvm-cov when a function has no coverage
instrumentation applied to it. With this change, we get coverage data
for all functions other than the two cases discussed above.
2022-01-21 19:39:18 +00: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 #93018 - pierwill:rm-unused-ord, r=davidtwco 2022-01-18 22:00:50 +01:00
rustc_ast_lowering Formally implement let chains 2022-01-18 19:38:17 -03:00
rustc_ast_passes Formally implement let chains 2022-01-18 19:38:17 -03:00
rustc_ast_pretty Rollup merge of #92920 - dtolnay:printtidy, r=cjgillot 2022-01-19 10:42:18 +01:00
rustc_attr Remove unnecessary sigils around Symbol::as_str() calls. 2021-12-15 17:32:14 +11:00
rustc_borrowck Use Term in ProjectionPredicate 2022-01-17 17:44:56 +00:00
rustc_builtin_macros Auto merge of #92816 - tmiasko:rm-llvm-asm, r=Amanieu 2022-01-17 09:40:29 +00:00
rustc_codegen_cranelift Pass target_features set instead of has_feature closure 2022-01-17 18:06:30 +01:00
rustc_codegen_gcc Use Symbol for target features in asm handling 2022-01-17 18:06:27 +01:00
rustc_codegen_llvm Work around missing code coverage data causing llvm-cov failures 2022-01-21 19:39:18 +00:00
rustc_codegen_ssa Rollup merge of #91278 - SparrowLii:place, r=spastorino 2022-01-19 10:42:14 +01:00
rustc_const_eval Auto merge of #92816 - tmiasko:rm-llvm-asm, r=Amanieu 2022-01-17 09:40:29 +00:00
rustc_data_structures Auto merge of #92740 - cuviper:update-rayons, r=Mark-Simulacrum 2022-01-16 08:12:23 +00:00
rustc_driver Rollup merge of #92504 - dtolnay:wall, r=jackh726 2022-01-06 23:15:17 +01:00
rustc_error_codes Rollup merge of #92752 - jamestiotio:error-codes-typos, r=nagisa 2022-01-17 20:07:04 +01: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 #92473 - petrochenkov:ltrattr2, r=Aaron1011 2022-01-17 02:06:54 +00:00
rustc_feature Formally implement let chains 2022-01-18 19:38:17 -03:00
rustc_fs_util Migrate to 2021 2021-09-20 22:21:42 -04:00
rustc_graphviz eplace usages of vec![].into_iter with [].into_iter 2022-01-09 14:09:25 +11:00
rustc_hir Auto merge of #87648 - JulianKnodt:const_eq_constrain, r=oli-obk 2022-01-18 09:58:39 +00:00
rustc_hir_pretty Use Term in ProjectionPredicate 2022-01-17 17:44:56 +00:00
rustc_incremental Rollup merge of #92825 - pierwill:rustc-version-force-rename, r=Mark-Simulacrum 2022-01-17 20:07:06 +01:00
rustc_index remove unused FIXME 2022-01-12 16:09:01 +01:00
rustc_infer Auto merge of #87648 - JulianKnodt:const_eq_constrain, r=oli-obk 2022-01-18 09:58:39 +00:00
rustc_interface Rollup merge of #90782 - ricobbe:binutils-dlltool, r=michaelwoerister 2022-01-18 22:00:42 +01:00
rustc_lexer Auto merge of #91393 - Julian-Wollersberger:lexer_optimization, r=petrochenkov 2021-12-03 13:20:14 +00:00
rustc_lint Replace NestedVisitorMap with NestedFilter 2022-01-16 16:02:36 -06:00
rustc_lint_defs Fix lints documents 2022-01-13 03:57:44 +00:00
rustc_llvm Remove LLVMRustMarkAllFunctionsNounwind 2022-01-14 00:36:12 +00: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 Rollup merge of #90782 - ricobbe:binutils-dlltool, r=michaelwoerister 2022-01-18 22:00:42 +01:00
rustc_middle Rollup merge of #93041 - pierwill:rm-unused-defid-ords, r=cjgillot 2022-01-19 10:42:19 +01:00
rustc_mir_build Formally implement let chains 2022-01-18 19:38:17 -03:00
rustc_mir_dataflow Remove deprecated LLVM-style inline assembly 2022-01-12 18:51:31 +01:00
rustc_mir_transform Auto merge of #90986 - camsteffen:nested-filter, r=cjgillot 2022-01-17 14:50:50 +00:00
rustc_monomorphize Auto merge of #92805 - BoxyUwU:revert-lazy-anon-const-substs, r=lcnr 2022-01-16 11:19:21 +00:00
rustc_parse Rollup merge of #91150 - dtolnay:qpath, r=davidtwco 2022-01-18 22:00:43 +01:00
rustc_parse_format Migrate to 2021 2021-09-20 22:21:42 -04:00
rustc_passes Rollup merge of #92783 - FabianWolff:issue-92726, r=nikomatsakis 2022-01-19 10:42:16 +01:00
rustc_plugin_impl replace dynamic library module with libloading 2021-12-06 12:03:47 -05:00
rustc_privacy Auto merge of #87648 - JulianKnodt:const_eq_constrain, r=oli-obk 2022-01-18 09:58:39 +00:00
rustc_query_impl attempt to re-add ty::Unevaluated visitor and friends 2022-01-15 01:16:55 +00:00
rustc_query_system Auto merge of #92740 - cuviper:update-rayons, r=Mark-Simulacrum 2022-01-16 08:12:23 +00:00
rustc_resolve Replace NestedVisitorMap with NestedFilter 2022-01-16 16:02:36 -06:00
rustc_save_analysis Replace NestedVisitorMap with NestedFilter 2022-01-16 16:02:36 -06:00
rustc_serialize Auto merge of #92604 - nnethercote:optimize-impl_read_unsigned_leb128, r=michaelwoerister 2022-01-15 07:27:30 +00:00
rustc_session Rollup merge of #90782 - ricobbe:binutils-dlltool, r=michaelwoerister 2022-01-18 22:00:42 +01:00
rustc_span Rollup merge of #92425 - calebzulawski:simd-cast, r=workingjubilee 2022-01-18 22:00:45 +01:00
rustc_symbol_mangling Add term to ExistentialProjection 2022-01-17 20:01:22 +00:00
rustc_target Pass target_features set instead of has_feature closure 2022-01-17 18:06:30 +01:00
rustc_trait_selection Rollup merge of #92780 - b-naber:postpone-const-eval-coherence, r=lcnr 2022-01-18 22:00:47 +01:00
rustc_traits Auto merge of #87648 - JulianKnodt:const_eq_constrain, r=oli-obk 2022-01-18 09:58:39 +00:00
rustc_ty_utils Auto merge of #92805 - BoxyUwU:revert-lazy-anon-const-substs, r=lcnr 2022-01-16 11:19:21 +00:00
rustc_type_ir initial revert 2022-01-15 01:16:55 +00:00
rustc_typeck Rollup merge of #92425 - calebzulawski:simd-cast, r=workingjubilee 2022-01-18 22:00:45 +01:00