rust/compiler
bors 7a58674259 Auto merge of #124255 - RenjiSann:renji/mcdc-nested-expressions, r=Zalathar
MCDC coverage: support nested decision coverage

#123409 provided the initial MCDC coverage implementation.

As referenced in #124144, it does not currently support "nested" decisions, like the following example :

```rust
fn nested_if_in_condition(a: bool, b: bool, c: bool) {
    if a && if b || c { true } else { false } {
        say("yes");
    } else {
        say("no");
    }
}
```

Note that there is an if-expression (`if b || c ...`) embedded inside a boolean expression in the decision of an outer if-expression.

This PR proposes a workaround for this cases, by introducing a Decision context stack, and by handing several `temporary condition bitmaps` instead of just one.
When instrumenting boolean expressions, if the current node is a leaf condition (i.e. not a `||`/`&&` logical operator nor a `!` not operator), we insert a new decision context, such that if there are more boolean expressions inside the condition, they are handled as separate expressions.

On the codegen LLVM side, we allocate as many `temp_cond_bitmap`s as necessary to handle the maximum encountered decision depth.
2024-04-29 11:54:49 +00:00
..
rustc
rustc_abi Rename inihibit_union_abi_opt() to inihibits_union_abi_opt() 2024-04-28 13:09:36 +05:30
rustc_arena
rustc_ast ast: Visit item components in "natural" order 2024-04-25 22:50:06 +03:00
rustc_ast_ir
rustc_ast_lowering ast: Generalize item kind visiting 2024-04-25 22:49:58 +03:00
rustc_ast_passes ast: Generalize item kind visiting 2024-04-25 22:49:58 +03:00
rustc_ast_pretty Give a name to each distinct manipulation of pretty-printer FixupContext 2024-04-19 23:49:44 -07:00
rustc_attr Rollup merge of #124324 - nnethercote:minor-ast-cleanups, r=estebank 2024-04-25 06:31:04 +02:00
rustc_baked_icu_data
rustc_borrowck review comment: rename method 2024-04-25 18:26:36 +00:00
rustc_builtin_macros Rollup merge of #124382 - petrochenkov:itemvisit, r=lcnr 2024-04-27 07:55:37 +02:00
rustc_codegen_cranelift debuginfo: Stabilize -Z debug-macros, -Z collapse-macro-debuginfo and #[collapse_debuginfo] 2024-04-25 22:14:47 +03:00
rustc_codegen_gcc Error on using yield without also using #[coroutine] on the closure 2024-04-24 08:05:29 +00:00
rustc_codegen_llvm Auto merge of #124255 - RenjiSann:renji/mcdc-nested-expressions, r=Zalathar 2024-04-29 11:54:49 +00:00
rustc_codegen_ssa debuginfo: Stabilize -Z debug-macros, -Z collapse-macro-debuginfo and #[collapse_debuginfo] 2024-04-25 22:14:47 +03:00
rustc_const_eval properly fill a promoted's required_consts 2024-04-23 23:02:54 +02:00
rustc_data_structures Stabilize generic NonZero. 2024-04-22 18:48:47 +02:00
rustc_driver
rustc_driver_impl Fix pretty hir for anon consts in diagnostics 2024-04-15 18:48:12 -04:00
rustc_error_codes Error on using yield without also using #[coroutine] on the closure 2024-04-24 08:05:29 +00:00
rustc_error_messages
rustc_errors Rollup merge of #124370 - ShE3py:substitution-part-offset, r=fee1-dead 2024-04-27 20:46:07 +02:00
rustc_expand Rollup merge of #124382 - petrochenkov:itemvisit, r=lcnr 2024-04-27 07:55:37 +02:00
rustc_feature debuginfo: Stabilize -Z debug-macros, -Z collapse-macro-debuginfo and #[collapse_debuginfo] 2024-04-25 22:14:47 +03:00
rustc_fluent_macro
rustc_fs_util Stabilize std::path::absolute 2024-04-24 14:35:02 +00:00
rustc_graphviz
rustc_hir review comment: rename method 2024-04-25 18:26:36 +00:00
rustc_hir_analysis Fix ICE on invalid const param types 2024-04-27 09:36:38 +05:30
rustc_hir_pretty Rename BindingAnnotation to BindingMode 2024-04-17 09:34:39 -04:00
rustc_hir_typeck Rollup merge of #124437 - linyihai:doc-link-typeck, r=compiler-errors 2024-04-27 20:46:09 +02:00
rustc_incremental Fix ICE when there is a non-Unicode entry in the incremental crate directory 2024-04-21 11:24:55 +01:00
rustc_index Simplify static_assert_sizes. 2024-04-18 15:36:25 +10:00
rustc_index_macros
rustc_infer Rollup merge of #124218 - Xiretza:subsubdiagnostics, r=davidtwco 2024-04-23 17:25:17 +02:00
rustc_interface debuginfo: Stabilize -Z debug-macros, -Z collapse-macro-debuginfo and #[collapse_debuginfo] 2024-04-25 22:14:47 +03:00
rustc_lexer Improved the compiler code with clippy 2024-04-24 09:41:44 +02:00
rustc_lint ast: Generalize item kind visiting 2024-04-25 22:49:58 +03:00
rustc_lint_defs Rename feature gate 2024-04-15 23:27:21 -04:00
rustc_llvm Rollup merge of #124287 - 41Leahcim:master, r=fmease 2024-04-25 18:57:56 +02:00
rustc_log Construct SourceMap at the same time as SessionGlobals. 2024-04-16 13:02:53 +10:00
rustc_macros Rollup merge of #124287 - 41Leahcim:master, r=fmease 2024-04-25 18:57:56 +02:00
rustc_metadata Error on using yield without also using #[coroutine] on the closure 2024-04-24 08:05:29 +00:00
rustc_middle Auto merge of #124255 - RenjiSann:renji/mcdc-nested-expressions, r=Zalathar 2024-04-29 11:54:49 +00:00
rustc_mir_build Auto merge of #124255 - RenjiSann:renji/mcdc-nested-expressions, r=Zalathar 2024-04-29 11:54:49 +00:00
rustc_mir_dataflow Add a non-shallow fake borrow 2024-04-20 16:01:35 +02:00
rustc_mir_transform Auto merge of #124255 - RenjiSann:renji/mcdc-nested-expressions, r=Zalathar 2024-04-29 11:54:49 +00:00
rustc_monomorphize Use non-exhaustive matches for TyKind 2024-04-17 20:49:53 +03:00
rustc_next_trait_solver
rustc_parse Auto merge of #104087 - nbdd0121:const, r=scottmcm 2024-04-24 17:23:03 +00:00
rustc_parse_format Simplify static_assert_sizes. 2024-04-18 15:36:25 +10:00
rustc_passes ast: Generalize item kind visiting 2024-04-25 22:49:58 +03:00
rustc_pattern_analysis Pass translation closure to add_to_diag_with() as reference 2024-04-21 07:45:03 +00:00
rustc_privacy
rustc_query_impl Stabilize generic NonZero. 2024-04-22 18:48:47 +02:00
rustc_query_system Rollup merge of #124252 - michaelwoerister:better-forbidden-read-ice, r=oli-obk 2024-04-22 20:26:00 +02:00
rustc_resolve Auto merge of #124431 - chenyukang:yukang-fix-rustdoc-124363, r=Nadrieril 2024-04-28 21:20:07 +00:00
rustc_sanitizers Update encode.rs 2024-04-14 14:56:41 +02:00
rustc_serialize Stabilise inline_const 2024-04-24 13:12:25 +01:00
rustc_session debuginfo: Stabilize -Z debug-macros, -Z collapse-macro-debuginfo and #[collapse_debuginfo] 2024-04-25 22:14:47 +03:00
rustc_smir Rollup merge of #122598 - Nadrieril:full-derefpats, r=matthewjasper 2024-04-23 17:25:15 +02:00
rustc_span debuginfo: Stabilize -Z debug-macros, -Z collapse-macro-debuginfo and #[collapse_debuginfo] 2024-04-25 22:14:47 +03:00
rustc_symbol_mangling Add simple async drop glue generation 2024-04-16 20:45:07 +03:00
rustc_target Auto merge of #117457 - daxpedda:wasm-nontrapping-fptoint, r=wesleywiser 2024-04-21 06:32:10 +00:00
rustc_trait_selection Record certainty of evaluate_added_goals_and_make_canonical_response call in candidate 2024-04-27 17:46:29 -04:00
rustc_traits
rustc_transmute ScalarInt: add methods to assert being a (u)int of given size 2024-04-19 13:51:52 +02:00
rustc_ty_utils Don't ICE when codegen_select returns ambiguity in new solver 2024-04-25 11:49:12 -04:00
rustc_type_ir Rollup merge of #124322 - whosehang:master, r=Nilstrieb 2024-04-25 00:19:54 +02:00
stable_mir Rollup merge of #122598 - Nadrieril:full-derefpats, r=matthewjasper 2024-04-23 17:25:15 +02:00