rust icon indicating copy to clipboard operation
rust copied to clipboard

Support mcdc analysis for pattern matching

Open ZhuUx opened this issue 1 year ago • 18 comments

To finish the second task at #124144.

Changes

  • Implement branch coverage for pattern matching specific to mcdc. As suggested at #124217, mcdc would better implement its own branch coverage methods for pattern match. That means, coverage-options=mcdc may give different branch coverage results of pattern matching with coverage-options=branch temporarily.
  • Generate decision mappings for if-let.
  • Generate branch mappings for match guards. No decision mappings for them because decisions for irrefutable patterns never fail.

Note. The results might be a bit counter intuitive due to reorder as this comment introduces

ZhuUx avatar Apr 23 '24 05:04 ZhuUx

r? @wesleywiser

rustbot has assigned @wesleywiser. They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

rustbot avatar Apr 23 '24 05:04 rustbot

For now there are still some work need to do and some code is not well optimized to reduce work in merging #124255 . r? @ghost @rustbot label +A-code-coverage @rustbot author

ZhuUx avatar Apr 23 '24 05:04 ZhuUx

Failed to set assignee to ghost: invalid assignee

Note: Only org members with at least the repository "read" role, users with write permissions, or people who have commented on the PR may be assigned.

rustbot avatar Apr 23 '24 05:04 rustbot

The job x86_64-gnu-llvm-17 failed! Check out the build log: (web) (plain)

Click to see the possible cause of the failure (guessed by this bot)
#16 exporting to docker image format
#16 sending tarball 29.4s done
#16 DONE 34.5s
##[endgroup]
Setting extra environment values for docker:  --env ENABLE_GCC_CODEGEN=1 --env GCC_EXEC_PREFIX=/usr/lib/gcc/
[CI_JOB_NAME=x86_64-gnu-llvm-17]
---
sccache: Starting the server...
##[group]Configure the build
configure: processing command line
configure: 
configure: build.configure-args := ['--build=x86_64-unknown-linux-gnu', '--llvm-root=/usr/lib/llvm-17', '--enable-llvm-link-shared', '--set', 'rust.thin-lto-import-instr-limit=10', '--set', 'change-id=99999999', '--enable-verbose-configure', '--enable-sccache', '--disable-manage-submodules', '--enable-locked-deps', '--enable-cargo-native-static', '--set', 'rust.codegen-units-std=1', '--set', 'dist.compression-profile=balanced', '--dist-compression-formats=xz', '--disable-dist-src', '--release-channel=nightly', '--enable-debug-assertions', '--enable-overflow-checks', '--enable-llvm-assertions', '--set', 'rust.verify-llvm-ir', '--set', 'rust.codegen-backends=llvm,cranelift,gcc', '--set', 'llvm.static-libstdcpp', '--enable-new-symbol-mangling']
configure: target.x86_64-unknown-linux-gnu.llvm-config := /usr/lib/llvm-17/bin/llvm-config
configure: llvm.link-shared     := True
configure: rust.thin-lto-import-instr-limit := 10
configure: change-id            := 99999999
---
   Compiling compiler_builtins v0.1.109
thread 'rustc' panicked at compiler/rustc_mir_build/src/build/coverageinfo.rs:430:26:
Checked at entry of the function
stack backtrace:
   0:     0x7fe1e3c204ff - <std[b6cc9835fef5897b]::sys_common::backtrace::_print::DisplayBacktrace as core[2e9ba8b09c60eab9]::fmt::Display>::fmt
   1:     0x7fe1e3c776b0 - core[2e9ba8b09c60eab9]::fmt::write
   2:     0x7fe1e3c15589 - <std[b6cc9835fef5897b]::sys::pal::unix::stdio::Stderr as std[b6cc9835fef5897b]::io::Write>::write_fmt
   3:     0x7fe1e3c202ce - std[b6cc9835fef5897b]::sys_common::backtrace::print
   4:     0x7fe1e3c2302a - std[b6cc9835fef5897b]::panicking::default_hook::{closure#1}
   5:     0x7fe1e3c22d41 - std[b6cc9835fef5897b]::panicking::default_hook
   6:     0x7fe1e4871658 - <alloc[e9cc6f24807e3585]::boxed::Box<rustc_driver_impl[d73c47798b57e8c1]::install_ice_hook::{closure#0}> as core[2e9ba8b09c60eab9]::ops::function::Fn<(&dyn for<'a, 'b> core[2e9ba8b09c60eab9]::ops::function::Fn<(&'a core[2e9ba8b09c60eab9]::panic::panic_info::PanicInfo<'b>,), Output = ()> + core[2e9ba8b09c60eab9]::marker::Sync + core[2e9ba8b09c60eab9]::marker::Send, &core[2e9ba8b09c60eab9]::panic::panic_info::PanicInfo)>>::call
   7:     0x7fe1e3c236b5 - std[b6cc9835fef5897b]::panicking::rust_panic_with_hook
   8:     0x7fe1e3c23466 - std[b6cc9835fef5897b]::panicking::begin_panic_handler::{closure#0}
   9:     0x7fe1e3c20ad9 - std[b6cc9835fef5897b]::sys_common::backtrace::__rust_end_short_backtrace::<std[b6cc9835fef5897b]::panicking::begin_panic_handler::{closure#0}, !>
  11:     0x7fe1e3bdd7f6 - core[2e9ba8b09c60eab9]::panicking::panic_fmt
  12:     0x7fe1e3bdd7bb - core[2e9ba8b09c60eab9]::option::expect_failed
  13:     0x7fe1e5bed9c9 - <rustc_mir_build[5dd70173eac4a093]::build::Builder>::test_candidates_with_or
  14:     0x7fe1e5be9716 - <rustc_mir_build[5dd70173eac4a093]::build::Builder>::match_simplified_candidates
  14:     0x7fe1e5be9716 - <rustc_mir_build[5dd70173eac4a093]::build::Builder>::match_simplified_candidates
  15:     0x7fe1e5bfed27 - <rustc_mir_build[5dd70173eac4a093]::build::Builder>::match_candidates
  16:     0x7fe1e5be5e7d - <rustc_mir_build[5dd70173eac4a093]::build::Builder>::lower_match_tree
  17:     0x7fe1e5bfc4ae - <rustc_mir_build[5dd70173eac4a093]::build::Builder>::match_expr
  18:     0x7fe1e5bf828f - <rustc_mir_build[5dd70173eac4a093]::build::Builder>::expr_into_dest
  19:     0x7fe1e5bffde6 - <rustc_mir_build[5dd70173eac4a093]::build::Builder>::in_scope::<<rustc_mir_build[5dd70173eac4a093]::build::Builder>::expr_into_dest::{closure#0}::{closure#0}, ()>
  20:     0x7fe1e5bfae84 - <rustc_mir_build[5dd70173eac4a093]::build::Builder>::expr_into_dest::{closure#0}
  21:     0x7fe1e5bf7cef - <rustc_mir_build[5dd70173eac4a093]::build::Builder>::expr_into_dest
  22:     0x7fe1e5bd0865 - rustc_mir_build[5dd70173eac4a093]::build::mir_build
  23:     0x7fe1e54046bc - rustc_mir_transform[d403687be26cce2b]::mir_built
  24:     0x7fe1e615a9b5 - rustc_query_impl[c6b598c0f36a9172]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[c6b598c0f36a9172]::query_impl::mir_built::dynamic_query::{closure#2}::{closure#0}, rustc_middle[1d5dfdcbbb4e6614]::query::erase::Erased<[u8; 8usize]>>
  25:     0x7fe1e62e5885 - <rustc_query_impl[c6b598c0f36a9172]::query_impl::mir_built::dynamic_query::{closure#2} as core[2e9ba8b09c60eab9]::ops::function::FnOnce<(rustc_middle[1d5dfdcbbb4e6614]::ty::context::TyCtxt, rustc_span[a10b0b0cef9c068b]::def_id::LocalDefId)>>::call_once
  26:     0x7fe1e65599f4 - rustc_query_system[e74e1ec916c4461c]::query::plumbing::try_execute_query::<rustc_query_impl[c6b598c0f36a9172]::DynamicConfig<rustc_query_system[e74e1ec916c4461c]::query::caches::VecCache<rustc_span[a10b0b0cef9c068b]::def_id::LocalDefId, rustc_middle[1d5dfdcbbb4e6614]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[c6b598c0f36a9172]::plumbing::QueryCtxt, false>
  27:     0x7fe1e641dc85 - rustc_query_impl[c6b598c0f36a9172]::query_impl::mir_built::get_query_non_incr::__rust_end_short_backtrace
  28:     0x7fe1e53ee06c - rustc_middle[1d5dfdcbbb4e6614]::query::plumbing::query_get_at::<rustc_query_system[e74e1ec916c4461c]::query::caches::VecCache<rustc_span[a10b0b0cef9c068b]::def_id::LocalDefId, rustc_middle[1d5dfdcbbb4e6614]::query::erase::Erased<[u8; 8usize]>>>
  29:     0x7fe1e53fa8a1 - rustc_mir_transform[d403687be26cce2b]::ffi_unwind_calls::has_ffi_unwind_calls
  30:     0x7fe1e6148a95 - rustc_query_impl[c6b598c0f36a9172]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[c6b598c0f36a9172]::query_impl::has_ffi_unwind_calls::dynamic_query::{closure#2}::{closure#0}, rustc_middle[1d5dfdcbbb4e6614]::query::erase::Erased<[u8; 1usize]>>
  31:     0x7fe1e6340d65 - <rustc_query_impl[c6b598c0f36a9172]::query_impl::has_ffi_unwind_calls::dynamic_query::{closure#2} as core[2e9ba8b09c60eab9]::ops::function::FnOnce<(rustc_middle[1d5dfdcbbb4e6614]::ty::context::TyCtxt, rustc_span[a10b0b0cef9c068b]::def_id::LocalDefId)>>::call_once
  32:     0x7fe1e6550caa - rustc_query_system[e74e1ec916c4461c]::query::plumbing::try_execute_query::<rustc_query_impl[c6b598c0f36a9172]::DynamicConfig<rustc_query_system[e74e1ec916c4461c]::query::caches::VecCache<rustc_span[a10b0b0cef9c068b]::def_id::LocalDefId, rustc_middle[1d5dfdcbbb4e6614]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[c6b598c0f36a9172]::plumbing::QueryCtxt, false>
  33:     0x7fe1e625d18b - rustc_query_impl[c6b598c0f36a9172]::query_impl::has_ffi_unwind_calls::get_query_non_incr::__rust_end_short_backtrace
  34:     0x7fe1e5404bd9 - rustc_mir_transform[d403687be26cce2b]::mir_promoted
  35:     0x7fe1e6137ada - rustc_query_impl[c6b598c0f36a9172]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[c6b598c0f36a9172]::query_impl::mir_promoted::dynamic_query::{closure#2}::{closure#0}, rustc_middle[1d5dfdcbbb4e6614]::query::erase::Erased<[u8; 16usize]>>
  36:     0x7fe1e6441eed - <rustc_query_impl[c6b598c0f36a9172]::query_impl::mir_promoted::dynamic_query::{closure#2} as core[2e9ba8b09c60eab9]::ops::function::FnOnce<(rustc_middle[1d5dfdcbbb4e6614]::ty::context::TyCtxt, rustc_span[a10b0b0cef9c068b]::def_id::LocalDefId)>>::call_once
  37:     0x7fe1e654bdf6 - rustc_query_system[e74e1ec916c4461c]::query::plumbing::try_execute_query::<rustc_query_impl[c6b598c0f36a9172]::DynamicConfig<rustc_query_system[e74e1ec916c4461c]::query::caches::VecCache<rustc_span[a10b0b0cef9c068b]::def_id::LocalDefId, rustc_middle[1d5dfdcbbb4e6614]::query::erase::Erased<[u8; 16usize]>>, false, false, false>, rustc_query_impl[c6b598c0f36a9172]::plumbing::QueryCtxt, false>
  38:     0x7fe1e625a095 - rustc_query_impl[c6b598c0f36a9172]::query_impl::mir_promoted::get_query_non_incr::__rust_end_short_backtrace
  39:     0x7fe1e5d96d38 - rustc_borrowck[e74d3702e58f69c2]::mir_borrowck
  40:     0x7fe1e6137705 - rustc_query_impl[c6b598c0f36a9172]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[c6b598c0f36a9172]::query_impl::mir_borrowck::dynamic_query::{closure#2}::{closure#0}, rustc_middle[1d5dfdcbbb4e6614]::query::erase::Erased<[u8; 8usize]>>
  41:     0x7fe1e62e0675 - <rustc_query_impl[c6b598c0f36a9172]::query_impl::mir_borrowck::dynamic_query::{closure#2} as core[2e9ba8b09c60eab9]::ops::function::FnOnce<(rustc_middle[1d5dfdcbbb4e6614]::ty::context::TyCtxt, rustc_span[a10b0b0cef9c068b]::def_id::LocalDefId)>>::call_once
  42:     0x7fe1e65599f4 - rustc_query_system[e74e1ec916c4461c]::query::plumbing::try_execute_query::<rustc_query_impl[c6b598c0f36a9172]::DynamicConfig<rustc_query_system[e74e1ec916c4461c]::query::caches::VecCache<rustc_span[a10b0b0cef9c068b]::def_id::LocalDefId, rustc_middle[1d5dfdcbbb4e6614]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[c6b598c0f36a9172]::plumbing::QueryCtxt, false>
  43:     0x7fe1e641fd15 - rustc_query_impl[c6b598c0f36a9172]::query_impl::mir_borrowck::get_query_non_incr::__rust_end_short_backtrace
  44:     0x7fe1e5f2891c - rustc_middle[1d5dfdcbbb4e6614]::query::plumbing::query_get_at::<rustc_query_system[e74e1ec916c4461c]::query::caches::VecCache<rustc_span[a10b0b0cef9c068b]::def_id::LocalDefId, rustc_middle[1d5dfdcbbb4e6614]::query::erase::Erased<[u8; 8usize]>>>
  45:     0x7fe1e5f4b401 - <rustc_borrowck[e74d3702e58f69c2]::type_check::TypeChecker>::prove_closure_bounds
  46:     0x7fe1e5f626b2 - <rustc_borrowck[e74d3702e58f69c2]::type_check::TypeChecker>::check_rvalue
  47:     0x7fe1e5f68721 - <rustc_borrowck[e74d3702e58f69c2]::type_check::TypeChecker>::typeck_mir
  48:     0x7fe1e5f3f596 - rustc_borrowck[e74d3702e58f69c2]::type_check::type_check
  49:     0x7fe1e5f18c23 - rustc_borrowck[e74d3702e58f69c2]::nll::compute_regions
  50:     0x7fe1e5dace11 - rustc_borrowck[e74d3702e58f69c2]::do_mir_borrowck
  51:     0x7fe1e5d9704e - rustc_borrowck[e74d3702e58f69c2]::mir_borrowck
  52:     0x7fe1e6137705 - rustc_query_impl[c6b598c0f36a9172]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[c6b598c0f36a9172]::query_impl::mir_borrowck::dynamic_query::{closure#2}::{closure#0}, rustc_middle[1d5dfdcbbb4e6614]::query::erase::Erased<[u8; 8usize]>>
  53:     0x7fe1e62e0675 - <rustc_query_impl[c6b598c0f36a9172]::query_impl::mir_borrowck::dynamic_query::{closure#2} as core[2e9ba8b09c60eab9]::ops::function::FnOnce<(rustc_middle[1d5dfdcbbb4e6614]::ty::context::TyCtxt, rustc_span[a10b0b0cef9c068b]::def_id::LocalDefId)>>::call_once
  54:     0x7fe1e65599f4 - rustc_query_system[e74e1ec916c4461c]::query::plumbing::try_execute_query::<rustc_query_impl[c6b598c0f36a9172]::DynamicConfig<rustc_query_system[e74e1ec916c4461c]::query::caches::VecCache<rustc_span[a10b0b0cef9c068b]::def_id::LocalDefId, rustc_middle[1d5dfdcbbb4e6614]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[c6b598c0f36a9172]::plumbing::QueryCtxt, false>
  55:     0x7fe1e641fd15 - rustc_query_impl[c6b598c0f36a9172]::query_impl::mir_borrowck::get_query_non_incr::__rust_end_short_backtrace
  56:     0x7fe1e525a71c - rustc_middle[1d5dfdcbbb4e6614]::query::plumbing::query_get_at::<rustc_query_system[e74e1ec916c4461c]::query::caches::VecCache<rustc_span[a10b0b0cef9c068b]::def_id::LocalDefId, rustc_middle[1d5dfdcbbb4e6614]::query::erase::Erased<[u8; 8usize]>>>
  57:     0x7fe1e5274d64 - rustc_hir_analysis[96be6b698472c4e7]::collect::type_of::opaque::find_opaque_ty_constraints_for_rpit
  58:     0x7fe1e613b7ba - rustc_query_impl[c6b598c0f36a9172]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[c6b598c0f36a9172]::query_impl::type_of_opaque::dynamic_query::{closure#2}::{closure#0}, rustc_middle[1d5dfdcbbb4e6614]::query::erase::Erased<[u8; 8usize]>>
  59:     0x7fe1e636d619 - <rustc_query_impl[c6b598c0f36a9172]::query_impl::type_of_opaque::dynamic_query::{closure#2} as core[2e9ba8b09c60eab9]::ops::function::FnOnce<(rustc_middle[1d5dfdcbbb4e6614]::ty::context::TyCtxt, rustc_span[a10b0b0cef9c068b]::def_id::DefId)>>::call_once
  60:     0x7fe1e64a3c35 - rustc_query_system[e74e1ec916c4461c]::query::plumbing::try_execute_query::<rustc_query_impl[c6b598c0f36a9172]::DynamicConfig<rustc_query_system[e74e1ec916c4461c]::query::caches::DefIdCache<rustc_middle[1d5dfdcbbb4e6614]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[c6b598c0f36a9172]::plumbing::QueryCtxt, false>
  61:     0x7fe1e629ad97 - rustc_query_impl[c6b598c0f36a9172]::query_impl::type_of_opaque::get_query_non_incr::__rust_end_short_backtrace
  62:     0x7fe1e5207c3f - rustc_middle[1d5dfdcbbb4e6614]::query::plumbing::query_get_at::<rustc_query_system[e74e1ec916c4461c]::query::caches::DefIdCache<rustc_middle[1d5dfdcbbb4e6614]::query::erase::Erased<[u8; 8usize]>>>
  63:     0x7fe1e521ef91 - rustc_hir_analysis[96be6b698472c4e7]::collect::type_of::type_of
  64:     0x7fe1e6158e07 - rustc_query_impl[c6b598c0f36a9172]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[c6b598c0f36a9172]::query_impl::type_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle[1d5dfdcbbb4e6614]::query::erase::Erased<[u8; 8usize]>>
  65:     0x7fe1e637c3f9 - <rustc_query_impl[c6b598c0f36a9172]::query_impl::type_of::dynamic_query::{closure#2} as core[2e9ba8b09c60eab9]::ops::function::FnOnce<(rustc_middle[1d5dfdcbbb4e6614]::ty::context::TyCtxt, rustc_span[a10b0b0cef9c068b]::def_id::DefId)>>::call_once
  66:     0x7fe1e64a3c35 - rustc_query_system[e74e1ec916c4461c]::query::plumbing::try_execute_query::<rustc_query_impl[c6b598c0f36a9172]::DynamicConfig<rustc_query_system[e74e1ec916c4461c]::query::caches::DefIdCache<rustc_middle[1d5dfdcbbb4e6614]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[c6b598c0f36a9172]::plumbing::QueryCtxt, false>
  67:     0x7fe1e637e7b7 - rustc_query_impl[c6b598c0f36a9172]::query_impl::type_of::get_query_non_incr::__rust_end_short_backtrace
  68:     0x7fe1e5aa4a9f - rustc_middle[1d5dfdcbbb4e6614]::query::plumbing::query_get_at::<rustc_query_system[e74e1ec916c4461c]::query::caches::DefIdCache<rustc_middle[1d5dfdcbbb4e6614]::query::erase::Erased<[u8; 8usize]>>>
  69:     0x7fe1e5aa94fb - <rustc_privacy[34f0973f123aa874]::EmbargoVisitor as rustc_hir[d01a24601fbeb471]::intravisit::Visitor>::visit_item
  70:     0x7fe1e5ad9415 - <rustc_middle[1d5dfdcbbb4e6614]::hir::map::Map>::visit_all_item_likes_in_crate::<rustc_privacy[34f0973f123aa874]::EmbargoVisitor>
  71:     0x7fe1e5aadf79 - rustc_privacy[34f0973f123aa874]::effective_visibilities
  72:     0x7fe1e614b833 - rustc_query_impl[c6b598c0f36a9172]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[c6b598c0f36a9172]::query_impl::effective_visibilities::dynamic_query::{closure#2}::{closure#0}, rustc_middle[1d5dfdcbbb4e6614]::query::erase::Erased<[u8; 8usize]>>
  73:     0x7fe1e6252831 - <rustc_query_impl[c6b598c0f36a9172]::query_impl::effective_visibilities::dynamic_query::{closure#2} as core[2e9ba8b09c60eab9]::ops::function::FnOnce<(rustc_middle[1d5dfdcbbb4e6614]::ty::context::TyCtxt, ())>>::call_once
  74:     0x7fe1e64b316c - rustc_query_system[e74e1ec916c4461c]::query::plumbing::try_execute_query::<rustc_query_impl[c6b598c0f36a9172]::DynamicConfig<rustc_query_system[e74e1ec916c4461c]::query::caches::SingleCache<rustc_middle[1d5dfdcbbb4e6614]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[c6b598c0f36a9172]::plumbing::QueryCtxt, false>
  75:     0x7fe1e634bfba - rustc_query_impl[c6b598c0f36a9172]::query_impl::effective_visibilities::get_query_non_incr::__rust_end_short_backtrace
  76:     0x7fe1e5a4536c - rustc_passes[c3a9e08973042870]::stability::check_unused_or_stable_features
  77:     0x7fe1e4b13369 - <rustc_session[bd944d257d98e935]::session::Session>::time::<(), rustc_interface[4919d2e12e8d520f]::passes::run_required_analyses::{closure#0}::{closure#0}::{closure#2}::{closure#0}>
  78:     0x7fe1e4a65268 - std[b6cc9835fef5897b]::panicking::try::<(), core[2e9ba8b09c60eab9]::panic::unwind_safe::AssertUnwindSafe<rustc_interface[4919d2e12e8d520f]::passes::run_required_analyses::{closure#0}::{closure#0}::{closure#2}>>
  79:     0x7fe1e4b146e1 - <rustc_session[bd944d257d98e935]::session::Session>::time::<(), rustc_interface[4919d2e12e8d520f]::passes::run_required_analyses::{closure#0}>
  80:     0x7fe1e4b08b16 - rustc_interface[4919d2e12e8d520f]::passes::analysis
  81:     0x7fe1e6158fe3 - rustc_query_impl[c6b598c0f36a9172]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[c6b598c0f36a9172]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle[1d5dfdcbbb4e6614]::query::erase::Erased<[u8; 1usize]>>
  82:     0x7fe1e641c9e1 - <rustc_query_impl[c6b598c0f36a9172]::query_impl::analysis::dynamic_query::{closure#2} as core[2e9ba8b09c60eab9]::ops::function::FnOnce<(rustc_middle[1d5dfdcbbb4e6614]::ty::context::TyCtxt, ())>>::call_once
  83:     0x7fe1e64af262 - rustc_query_system[e74e1ec916c4461c]::query::plumbing::try_execute_query::<rustc_query_impl[c6b598c0f36a9172]::DynamicConfig<rustc_query_system[e74e1ec916c4461c]::query::caches::SingleCache<rustc_middle[1d5dfdcbbb4e6614]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[c6b598c0f36a9172]::plumbing::QueryCtxt, false>
  85:     0x7fe1e48733a5 - <rustc_middle[1d5dfdcbbb4e6614]::ty::context::GlobalCtxt>::enter::<rustc_driver_impl[d73c47798b57e8c1]::run_compiler::{closure#0}::{closure#1}::{closure#3}, core[2e9ba8b09c60eab9]::result::Result<(), rustc_span[a10b0b0cef9c068b]::ErrorGuaranteed>>
  85:     0x7fe1e48733a5 - <rustc_middle[1d5dfdcbbb4e6614]::ty::context::GlobalCtxt>::enter::<rustc_driver_impl[d73c47798b57e8c1]::run_compiler::{closure#0}::{closure#1}::{closure#3}, core[2e9ba8b09c60eab9]::result::Result<(), rustc_span[a10b0b0cef9c068b]::ErrorGuaranteed>>
  86:     0x7fe1e483814b - <rustc_interface[4919d2e12e8d520f]::interface::Compiler>::enter::<rustc_driver_impl[d73c47798b57e8c1]::run_compiler::{closure#0}::{closure#1}, core[2e9ba8b09c60eab9]::result::Result<core[2e9ba8b09c60eab9]::option::Option<rustc_interface[4919d2e12e8d520f]::queries::Linker>, rustc_span[a10b0b0cef9c068b]::ErrorGuaranteed>>
  87:     0x7fe1e4865ceb - <scoped_tls[cfe6f969b6baaf62]::ScopedKey<rustc_span[a10b0b0cef9c068b]::SessionGlobals>>::set::<rustc_interface[4919d2e12e8d520f]::util::run_in_thread_with_globals<rustc_interface[4919d2e12e8d520f]::util::run_in_thread_pool_with_globals<rustc_interface[4919d2e12e8d520f]::interface::run_compiler<core[2e9ba8b09c60eab9]::result::Result<(), rustc_span[a10b0b0cef9c068b]::ErrorGuaranteed>, rustc_driver_impl[d73c47798b57e8c1]::run_compiler::{closure#0}>::{closure#1}, core[2e9ba8b09c60eab9]::result::Result<(), rustc_span[a10b0b0cef9c068b]::ErrorGuaranteed>>::{closure#0}, core[2e9ba8b09c60eab9]::result::Result<(), rustc_span[a10b0b0cef9c068b]::ErrorGuaranteed>>::{closure#0}::{closure#0}::{closure#0}, core[2e9ba8b09c60eab9]::result::Result<(), rustc_span[a10b0b0cef9c068b]::ErrorGuaranteed>>
  88:     0x7fe1e4817abf - rustc_span[a10b0b0cef9c068b]::create_session_globals_then::<core[2e9ba8b09c60eab9]::result::Result<(), rustc_span[a10b0b0cef9c068b]::ErrorGuaranteed>, rustc_interface[4919d2e12e8d520f]::util::run_in_thread_with_globals<rustc_interface[4919d2e12e8d520f]::util::run_in_thread_pool_with_globals<rustc_interface[4919d2e12e8d520f]::interface::run_compiler<core[2e9ba8b09c60eab9]::result::Result<(), rustc_span[a10b0b0cef9c068b]::ErrorGuaranteed>, rustc_driver_impl[d73c47798b57e8c1]::run_compiler::{closure#0}>::{closure#1}, core[2e9ba8b09c60eab9]::result::Result<(), rustc_span[a10b0b0cef9c068b]::ErrorGuaranteed>>::{closure#0}, core[2e9ba8b09c60eab9]::result::Result<(), rustc_span[a10b0b0cef9c068b]::ErrorGuaranteed>>::{closure#0}::{closure#0}::{closure#0}>
  89:     0x7fe1e486f702 - std[b6cc9835fef5897b]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[4919d2e12e8d520f]::util::run_in_thread_with_globals<rustc_interface[4919d2e12e8d520f]::util::run_in_thread_pool_with_globals<rustc_interface[4919d2e12e8d520f]::interface::run_compiler<core[2e9ba8b09c60eab9]::result::Result<(), rustc_span[a10b0b0cef9c068b]::ErrorGuaranteed>, rustc_driver_impl[d73c47798b57e8c1]::run_compiler::{closure#0}>::{closure#1}, core[2e9ba8b09c60eab9]::result::Result<(), rustc_span[a10b0b0cef9c068b]::ErrorGuaranteed>>::{closure#0}, core[2e9ba8b09c60eab9]::result::Result<(), rustc_span[a10b0b0cef9c068b]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[2e9ba8b09c60eab9]::result::Result<(), rustc_span[a10b0b0cef9c068b]::ErrorGuaranteed>>
  90:     0x7fe1e48249f4 - <<std[b6cc9835fef5897b]::thread::Builder>::spawn_unchecked_<rustc_interface[4919d2e12e8d520f]::util::run_in_thread_with_globals<rustc_interface[4919d2e12e8d520f]::util::run_in_thread_pool_with_globals<rustc_interface[4919d2e12e8d520f]::interface::run_compiler<core[2e9ba8b09c60eab9]::result::Result<(), rustc_span[a10b0b0cef9c068b]::ErrorGuaranteed>, rustc_driver_impl[d73c47798b57e8c1]::run_compiler::{closure#0}>::{closure#1}, core[2e9ba8b09c60eab9]::result::Result<(), rustc_span[a10b0b0cef9c068b]::ErrorGuaranteed>>::{closure#0}, core[2e9ba8b09c60eab9]::result::Result<(), rustc_span[a10b0b0cef9c068b]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[2e9ba8b09c60eab9]::result::Result<(), rustc_span[a10b0b0cef9c068b]::ErrorGuaranteed>>::{closure#2} as core[2e9ba8b09c60eab9]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  91:     0x7fe1e3c2ef14 - <std[b6cc9835fef5897b]::sys::pal::unix::thread::Thread>::new::thread_start
  93:     0x7fe1e3aac5fc - <unknown>
  94:                0x0 - <unknown>

error: the compiler unexpectedly panicked. this is a bug.
error: the compiler unexpectedly panicked. this is a bug.

note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md

note: please make sure that you have updated to the latest nightly

warning: the ICE couldn't be written to `/checkout/rustc-ice-2024-04-23T05_44_44-9972.txt`: Read-only file system (os error 30)
note: rustc 1.79.0-nightly (1cf6e218f 2024-04-23) running on x86_64-unknown-linux-gnu


note: compiler flags: --crate-type lib -C opt-level=3 -C embed-bitcode=no -C codegen-units=1 -C debug-assertions=on -Z unstable-options -C symbol-mangling-version=v0 -Z unstable-options -Z macro-backtrace -C split-debuginfo=off -C prefer-dynamic -C llvm-args=-import-instr-limit=10 -Z inline-mir -Z inline-mir-preserve-debug -C link-args=-Wl,-z,origin -C link-args=-Wl,-rpath,$ORIGIN/../lib -C embed-bitcode=yes -C force-frame-pointers=yes -Z crate-attr=doc(html_root_url="https://doc.rust-lang.org/nightly/") -Z binary-dep-depinfo -Z force-unstable-if-unmarked
note: some of the compiler flags provided by cargo are hidden

query stack during panic:
query stack during panic:
#0 [mir_built] building MIR for `iter::adapters::filter_map::filter_map_fold::{closure#0}`
#1 [has_ffi_unwind_calls] checking if `iter::adapters::filter_map::filter_map_fold::{closure#0}` contains FFI-unwind calls
#2 [mir_promoted] promoting constants in MIR for `iter::adapters::filter_map::filter_map_fold::{closure#0}`
#3 [mir_borrowck] borrow-checking `iter::adapters::filter_map::filter_map_fold::{closure#0}`
#4 [mir_borrowck] borrow-checking `iter::adapters::filter_map::filter_map_fold`
#5 [type_of_opaque] computing type of opaque `iter::adapters::filter_map::filter_map_fold::{opaque#0}`
#6 [type_of] computing type of `iter::adapters::filter_map::filter_map_fold::{opaque#0}`
#7 [effective_visibilities] checking effective visibilities
end of query stack
end of query stack
note: no errors encountered even though delayed bugs were created

note: those delayed bugs will now be shown as internal compiler errors

error: internal compiler error: {OpaqueTypeKey { def_id: DefId(0:54945 ~ core[9b98]::iter::adapters::filter_map::filter_map_fold::{opaque#0}), args: [T/#0, B/#1, Acc/#2, impl FnMut(T) -> Option<B>/#3, impl FnMut(Acc, B) -> Acc/#4] }: OpaqueTypeDecl { hidden_type: OpaqueHiddenType { span: library/core/src/iter/adapters/filter_map.rs:39:5: 42:6 (#0), ty: Closure(DefId(0:5983 ~ core[9b98]::iter::adapters::filter_map::filter_map_fold::{closure#0}), [T/#0, B/#1, Acc/#2, impl FnMut(T) -> Option<B>/#3, impl FnMut(Acc, B) -> Acc/#4, i16, Binder(extern "RustCall" fn((Acc/#2, T/#0)) -> Acc/#2, []), (impl FnMut(T) -> Option<B>/#3, impl FnMut(Acc, B) -> Acc/#4)]) } }}
  = note: delayed at compiler/rustc_infer/src/infer/opaque_types/table.rs:43:43
  = note: delayed at compiler/rustc_infer/src/infer/opaque_types/table.rs:43:43
             0: <rustc_errors::DiagCtxtInner>::emit_diagnostic
             1: <rustc_errors::DiagCtxt>::emit_diagnostic
             2: <rustc_errors::diagnostic::Diag>::emit_producing_error_guaranteed
             3: <rustc_infer::infer::opaque_types::table::OpaqueTypeStorage as core::ops::drop::Drop>::drop
             5: core::ptr::drop_in_place::<rustc_infer::infer::InferCtxt>
             6: rustc_borrowck::mir_borrowck
             6: rustc_borrowck::mir_borrowck
             7: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::mir_borrowck::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 8]>>
             8: <rustc_query_impl::query_impl::mir_borrowck::dynamic_query::{closure#2} as core::ops::function::FnOnce<(rustc_middle::ty::context::TyCtxt, rustc_span::def_id::LocalDefId)>>::call_once
             9: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::VecCache<rustc_span::def_id::LocalDefId, rustc_middle::query::erase::Erased<[u8; 8]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, false>
            10: rustc_query_impl::query_impl::mir_borrowck::get_query_non_incr::__rust_end_short_backtrace
            11: rustc_middle::query::plumbing::query_get_at::<rustc_query_system::query::caches::VecCache<rustc_span::def_id::LocalDefId, rustc_middle::query::erase::Erased<[u8; 8]>>>
            12: rustc_hir_analysis::collect::type_of::opaque::find_opaque_ty_constraints_for_rpit
            13: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::type_of_opaque::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 8]>>
            14: <rustc_query_impl::query_impl::type_of_opaque::dynamic_query::{closure#2} as core::ops::function::FnOnce<(rustc_middle::ty::context::TyCtxt, rustc_span::def_id::DefId)>>::call_once
            15: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefIdCache<rustc_middle::query::erase::Erased<[u8; 8]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, false>
            16: rustc_query_impl::query_impl::type_of_opaque::get_query_non_incr::__rust_end_short_backtrace
            17: rustc_middle::query::plumbing::query_get_at::<rustc_query_system::query::caches::DefIdCache<rustc_middle::query::erase::Erased<[u8; 8]>>>
            18: rustc_hir_analysis::collect::type_of::type_of
            19: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::type_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 8]>>
            20: <rustc_query_impl::query_impl::type_of::dynamic_query::{closure#2} as core::ops::function::FnOnce<(rustc_middle::ty::context::TyCtxt, rustc_span::def_id::DefId)>>::call_once
            21: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::DefIdCache<rustc_middle::query::erase::Erased<[u8; 8]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, false>
            22: rustc_query_impl::query_impl::type_of::get_query_non_incr::__rust_end_short_backtrace
            23: rustc_middle::query::plumbing::query_get_at::<rustc_query_system::query::caches::DefIdCache<rustc_middle::query::erase::Erased<[u8; 8]>>>
            24: <rustc_privacy::EmbargoVisitor as rustc_hir::intravisit::Visitor>::visit_item
            25: <rustc_middle::hir::map::Map>::visit_all_item_likes_in_crate::<rustc_privacy::EmbargoVisitor>
            26: rustc_privacy::effective_visibilities
            27: rustc_query_impl::plumbing::__rust_begin_short_backtrace::<rustc_query_impl::query_impl::effective_visibilities::dynamic_query::{closure#2}::{closure#0}, rustc_middle::query::erase::Erased<[u8; 8]>>
            28: <rustc_query_impl::query_impl::effective_visibilities::dynamic_query::{closure#2} as core::ops::function::FnOnce<(rustc_middle::ty::context::TyCtxt, ())>>::call_once
            29: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::DynamicConfig<rustc_query_system::query::caches::SingleCache<rustc_middle::query::erase::Erased<[u8; 8]>>, false, false, false>, rustc_query_impl::plumbing::QueryCtxt, false>
            30: rustc_query_impl::query_impl::effective_visibilities::get_query_non_incr::__rust_end_short_backtrace
            32: <rustc_session::session::Session>::time::<(), rustc_interface::passes::run_required_analyses::{closure#0}::{closure#0}::{closure#2}::{closure#0}>
            33: std::panicking::try::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_interface::passes::run_required_analyses::{closure#0}::{closure#0}::{closure#2}>>
            34: <rustc_session::session::Session>::time::<(), rustc_interface::passes::run_required_analyses::{closure#0}>
            35: rustc_interface::passes::analysis
---
note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md

note: please make sure that you have updated to the latest nightly

warning: the ICE couldn't be written to `/checkout/rustc-ice-2024-04-23T05_44_44-9972.txt`: Read-only file system (os error 30)
note: rustc 1.79.0-nightly (1cf6e218f 2024-04-23) running on x86_64-unknown-linux-gnu


note: compiler flags: --crate-type lib -C opt-level=3 -C embed-bitcode=no -C codegen-units=1 -C debug-assertions=on -Z unstable-options -C symbol-mangling-version=v0 -Z unstable-options -Z macro-backtrace -C split-debuginfo=off -C prefer-dynamic -C llvm-args=-import-instr-limit=10 -Z inline-mir -Z inline-mir-preserve-debug -C link-args=-Wl,-z,origin -C link-args=-Wl,-rpath,$ORIGIN/../lib -C embed-bitcode=yes -C force-frame-pointers=yes -Z crate-attr=doc(html_root_url="https://doc.rust-lang.org/nightly/") -Z binary-dep-depinfo -Z force-unstable-if-unmarked
note: some of the compiler flags provided by cargo are hidden

query stack during panic:
end of query stack
---
note: we would appreciate a bug report: https://github.com/rust-lang/rust/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md

note: please make sure that you have updated to the latest nightly

warning: the ICE couldn't be written to `/checkout/rustc-ice-2024-04-23T05_44_44-9972.txt`: Read-only file system (os error 30)
note: rustc 1.79.0-nightly (1cf6e218f 2024-04-23) running on x86_64-unknown-linux-gnu


note: compiler flags: --crate-type lib -C opt-level=3 -C embed-bitcode=no -C codegen-units=1 -C debug-assertions=on -Z unstable-options -C symbol-mangling-version=v0 -Z unstable-options -Z macro-backtrace -C split-debuginfo=off -C prefer-dynamic -C llvm-args=-import-instr-limit=10 -Z inline-mir -Z inline-mir-preserve-debug -C link-args=-Wl,-z,origin -C link-args=-Wl,-rpath,$ORIGIN/../lib -C embed-bitcode=yes -C force-frame-pointers=yes -Z crate-attr=doc(html_root_url="https://doc.rust-lang.org/nightly/") -Z binary-dep-depinfo -Z force-unstable-if-unmarked
note: some of the compiler flags provided by cargo are hidden

query stack during panic:
end of query stack
end of query stack
thread caused non-unwinding panic. aborting.
rustc exited with signal: 6 (SIGABRT) (core dumped)

Caused by:
Caused by:
  process didn't exit successfully: `/checkout/obj/build/bootstrap/debug/rustc /checkout/obj/build/bootstrap/debug/rustc --crate-name core --edition=2021 library/core/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --crate-type lib --emit=dep-info,metadata,link -C opt-level=3 -C embed-bitcode=no -C codegen-units=1 -C debug-assertions=on -Zunstable-options --check-cfg 'cfg(docsrs)' --check-cfg 'cfg(feature, values("debug_refcell", "panic_immediate_abort"))' -C metadata=70719e8645e6f000 -C extra-filename=-70719e8645e6f000 --out-dir /checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std/x86_64-unknown-linux-gnu/release/deps --target x86_64-unknown-linux-gnu -L dependency=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std/x86_64-unknown-linux-gnu/release/deps -L dependency=/checkout/obj/build/x86_64-unknown-linux-gnu/stage1-std/release/deps -Csymbol-mangling-version=v0 '--check-cfg=cfg(feature,values(any()))' -Zunstable-options '--check-cfg=cfg(bootstrap)' '--check-cfg=cfg(stdarch_intel_sde)' '--check-cfg=cfg(no_fp_fmt_parse)' '--check-cfg=cfg(no_global_oom_handling)' '--check-cfg=cfg(no_rc)' '--check-cfg=cfg(no_sync)' '--check-cfg=cfg(netbsd10)' '--check-cfg=cfg(backtrace_in_libstd)' '--check-cfg=cfg(target_env,values("libnx","p2"))' '--check-cfg=cfg(target_os,values("visionos"))' '--check-cfg=cfg(target_arch,values("arm64ec","spirv","nvptx","xtensa"))' -Zmacro-backtrace -Csplit-debuginfo=off -Cprefer-dynamic -Cllvm-args=-import-instr-limit=10 -Zinline-mir -Zinline-mir-preserve-debug -Clink-args=-Wl,-z,origin '-Clink-args=-Wl,-rpath,$ORIGIN/../lib' -Cembed-bitcode=yes -Cforce-frame-pointers=yes '-Zcrate-attr=doc(html_root_url="https://doc.rust-lang.org/nightly/")' -Z binary-dep-depinfo` (exit status: 254)
Build completed unsuccessfully in 0:03:58
  local time: Tue Apr 23 05:44:51 UTC 2024
  network time: Tue, 23 Apr 2024 05:44:51 GMT
##[error]Process completed with exit code 1.

rust-log-analyzer avatar Apr 23 '24 05:04 rust-log-analyzer

The job x86_64-gnu-llvm-17 failed! Check out the build log: (web) (plain)

Click to see the possible cause of the failure (guessed by this bot)
#16 exporting to docker image format
#16 sending tarball 30.1s done
#16 DONE 35.4s
##[endgroup]
Setting extra environment values for docker:  --env ENABLE_GCC_CODEGEN=1 --env GCC_EXEC_PREFIX=/usr/lib/gcc/
[CI_JOB_NAME=x86_64-gnu-llvm-17]
---
sccache: Starting the server...
##[group]Configure the build
configure: processing command line
configure: 
configure: build.configure-args := ['--build=x86_64-unknown-linux-gnu', '--llvm-root=/usr/lib/llvm-17', '--enable-llvm-link-shared', '--set', 'rust.thin-lto-import-instr-limit=10', '--set', 'change-id=99999999', '--enable-verbose-configure', '--enable-sccache', '--disable-manage-submodules', '--enable-locked-deps', '--enable-cargo-native-static', '--set', 'rust.codegen-units-std=1', '--set', 'dist.compression-profile=balanced', '--dist-compression-formats=xz', '--disable-dist-src', '--release-channel=nightly', '--enable-debug-assertions', '--enable-overflow-checks', '--enable-llvm-assertions', '--set', 'rust.verify-llvm-ir', '--set', 'rust.codegen-backends=llvm,cranelift,gcc', '--set', 'llvm.static-libstdcpp', '--enable-new-symbol-mangling']
configure: target.x86_64-unknown-linux-gnu.llvm-config := /usr/lib/llvm-17/bin/llvm-config
configure: llvm.link-shared     := True
configure: rust.thin-lto-import-instr-limit := 10
configure: change-id            := 99999999
---
---- [coverage-map] tests/coverage/branch/generics.rs stdout ----

error: compilation failed!
status: exit status: 101
command: env -u RUSTC_LOG_COLOR RUSTC_ICE="0" RUST_BACKTRACE="short" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/coverage/branch/generics.rs" "-Zthreads=1" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Z" "ignore-directory-in-diagnostics-source-blocks=/cargo" "-Z" "ignore-directory-in-diagnostics-source-blocks=/checkout/vendor" "--sysroot" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2" "--target=x86_64-unknown-linux-gnu" "-Cinstrument-coverage" "-Zno-profiler-runtime" "-Copt-level=2" "--emit" "llvm-ir" "-C" "prefer-dynamic" "-o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/coverage/branch/generics.coverage-map/generics.ll" "-A" "internal_features" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/coverage/branch/generics.coverage-map/auxiliary" "--edition=2021" "-Zcoverage-options=branch"
--- stderr -------------------------------
thread 'rustc' panicked at compiler/rustc_mir_build/src/build/coverageinfo.rs:197:23:
attempt to subtract with overflow
stack backtrace:
stack backtrace:
   0: rust_begin_unwind
   1: core::panicking::panic_fmt
   2: core::panicking::panic_const::panic_const_sub_overflow
   3: <rustc_mir_build::build::coverageinfo::BranchInfoBuilder>::into_done
   4: <rustc_mir_build::build::Builder>::finish
   5: rustc_mir_build::build::mir_build
   6: rustc_mir_transform::mir_built
      [... omitted 2 frames ...]
   7: rustc_mir_build::check_unsafety::check_unsafety
      [... omitted 2 frames ...]
   8: <rustc_middle::hir::map::Map>::par_body_owners::<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}
   9: std::panicking::try::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_data_structures::sync::parallel::enabled::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::hir::map::Map>::par_body_owners<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#0}::{closure#0}>>
  10: <rustc_data_structures::sync::parallel::ParallelGuard>::run::<(), rustc_data_structures::sync::parallel::enabled::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::hir::map::Map>::par_body_owners<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#1}::{closure#0}>
  11: <rustc_session::session::Session>::time::<(), rustc_interface::passes::run_required_analyses::{closure#1}>
  12: rustc_interface::passes::analysis
      [... omitted 2 frames ...]
  14: <rustc_interface::interface::Compiler>::enter::<rustc_driver_impl::run_compiler::{closure#0}::{closure#1}, core::result::Result<core::option::Option<rustc_interface::queries::Linker>, rustc_span::ErrorGuaranteed>>
  15: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}::{closure#0}::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>
  16: rustc_span::create_session_globals_then::<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}::{closure#0}::{closure#0}>
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---
note: please make sure that you have updated to the latest nightly

note: rustc 1.79.0-nightly (2789fdad0 2024-04-23) running on x86_64-unknown-linux-gnu

note: compiler flags: -Z threads=1 -Z simulate-remapped-rust-src-base=/rustc/FAKE_PREFIX -Z translate-remapped-path-to-local-path=no -Z ignore-directory-in-diagnostics-source-blocks=/cargo -Z ignore-directory-in-diagnostics-source-blocks=/checkout/vendor -C instrument-coverage -Z no-profiler-runtime -C opt-level=2 -C prefer-dynamic -C rpath -C debuginfo=0 -Z coverage-options=branch
query stack during panic:
query stack during panic:
#0 [mir_built] building MIR for `print_size`
#1 [check_unsafety] unsafety-checking `print_size`
end of query stack
------------------------------------------



---- [coverage-map] tests/coverage/branch/guard.rs stdout ----

error: compilation failed!
status: exit status: 101
command: env -u RUSTC_LOG_COLOR RUSTC_ICE="0" RUST_BACKTRACE="short" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/coverage/branch/guard.rs" "-Zthreads=1" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Z" "ignore-directory-in-diagnostics-source-blocks=/cargo" "-Z" "ignore-directory-in-diagnostics-source-blocks=/checkout/vendor" "--sysroot" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2" "--target=x86_64-unknown-linux-gnu" "-Cinstrument-coverage" "-Zno-profiler-runtime" "-Copt-level=2" "--emit" "llvm-ir" "-C" "prefer-dynamic" "-o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/coverage/branch/guard.coverage-map/guard.ll" "-A" "internal_features" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/coverage/branch/guard.coverage-map/auxiliary" "--edition=2021" "-Zcoverage-options=branch"
--- stderr -------------------------------
thread 'rustc' panicked at compiler/rustc_mir_build/src/build/coverageinfo.rs:197:23:
attempt to subtract with overflow
stack backtrace:
stack backtrace:
   0: rust_begin_unwind
   1: core::panicking::panic_fmt
   2: core::panicking::panic_const::panic_const_sub_overflow
   3: <rustc_mir_build::build::coverageinfo::BranchInfoBuilder>::into_done
   4: <rustc_mir_build::build::Builder>::finish
   5: rustc_mir_build::build::mir_build
   6: rustc_mir_transform::mir_built
      [... omitted 2 frames ...]
   7: rustc_mir_build::check_unsafety::check_unsafety
      [... omitted 2 frames ...]
   8: <rustc_middle::hir::map::Map>::par_body_owners::<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}
   9: std::panicking::try::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_data_structures::sync::parallel::enabled::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::hir::map::Map>::par_body_owners<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#0}::{closure#0}>>
  10: <rustc_data_structures::sync::parallel::ParallelGuard>::run::<(), rustc_data_structures::sync::parallel::enabled::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::hir::map::Map>::par_body_owners<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#1}::{closure#0}>
  11: <rustc_session::session::Session>::time::<(), rustc_interface::passes::run_required_analyses::{closure#1}>
  12: rustc_interface::passes::analysis
      [... omitted 2 frames ...]
  14: <rustc_interface::interface::Compiler>::enter::<rustc_driver_impl::run_compiler::{closure#0}::{closure#1}, core::result::Result<core::option::Option<rustc_interface::queries::Linker>, rustc_span::ErrorGuaranteed>>
  15: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}::{closure#0}::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>
  16: rustc_span::create_session_globals_then::<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}::{closure#0}::{closure#0}>
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---
note: please make sure that you have updated to the latest nightly

note: rustc 1.79.0-nightly (2789fdad0 2024-04-23) running on x86_64-unknown-linux-gnu

note: compiler flags: -Z threads=1 -Z simulate-remapped-rust-src-base=/rustc/FAKE_PREFIX -Z translate-remapped-path-to-local-path=no -Z ignore-directory-in-diagnostics-source-blocks=/cargo -Z ignore-directory-in-diagnostics-source-blocks=/checkout/vendor -C instrument-coverage -Z no-profiler-runtime -C opt-level=2 -C prefer-dynamic -C rpath -C debuginfo=0 -Z coverage-options=branch
query stack during panic:
query stack during panic:
#0 [mir_built] building MIR for `branch_match_guard`
#1 [check_unsafety] unsafety-checking `branch_match_guard`
end of query stack
------------------------------------------



---- [coverage-map] tests/coverage/branch/if.rs stdout ----

error: compilation failed!
status: exit status: 101
command: env -u RUSTC_LOG_COLOR RUSTC_ICE="0" RUST_BACKTRACE="short" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/coverage/branch/if.rs" "-Zthreads=1" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Z" "ignore-directory-in-diagnostics-source-blocks=/cargo" "-Z" "ignore-directory-in-diagnostics-source-blocks=/checkout/vendor" "--sysroot" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2" "--target=x86_64-unknown-linux-gnu" "-Cinstrument-coverage" "-Zno-profiler-runtime" "-Copt-level=2" "--emit" "llvm-ir" "-C" "prefer-dynamic" "-o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/coverage/branch/if.coverage-map/if.ll" "-A" "internal_features" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/coverage/branch/if.coverage-map/auxiliary" "--edition=2021" "-Zcoverage-options=branch"
--- stderr -------------------------------
thread 'rustc' panicked at compiler/rustc_mir_build/src/build/coverageinfo.rs:197:23:
attempt to subtract with overflow
stack backtrace:
stack backtrace:
   0: rust_begin_unwind
   1: core::panicking::panic_fmt
   2: core::panicking::panic_const::panic_const_sub_overflow
   3: <rustc_mir_build::build::coverageinfo::BranchInfoBuilder>::into_done
   4: <rustc_mir_build::build::Builder>::finish
   5: rustc_mir_build::build::mir_build
   6: rustc_mir_transform::mir_built
      [... omitted 2 frames ...]
   7: rustc_mir_build::check_unsafety::check_unsafety
      [... omitted 2 frames ...]
   8: <rustc_middle::hir::map::Map>::par_body_owners::<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}
   9: std::panicking::try::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_data_structures::sync::parallel::enabled::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::hir::map::Map>::par_body_owners<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#0}::{closure#0}>>
  10: <rustc_data_structures::sync::parallel::ParallelGuard>::run::<(), rustc_data_structures::sync::parallel::enabled::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::hir::map::Map>::par_body_owners<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#1}::{closure#0}>
  11: <rustc_session::session::Session>::time::<(), rustc_interface::passes::run_required_analyses::{closure#1}>
  12: rustc_interface::passes::analysis
      [... omitted 2 frames ...]
  14: <rustc_interface::interface::Compiler>::enter::<rustc_driver_impl::run_compiler::{closure#0}::{closure#1}, core::result::Result<core::option::Option<rustc_interface::queries::Linker>, rustc_span::ErrorGuaranteed>>
  15: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}::{closure#0}::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>
  16: rustc_span::create_session_globals_then::<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}::{closure#0}::{closure#0}>
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---
note: please make sure that you have updated to the latest nightly

note: rustc 1.79.0-nightly (2789fdad0 2024-04-23) running on x86_64-unknown-linux-gnu

note: compiler flags: -Z threads=1 -Z simulate-remapped-rust-src-base=/rustc/FAKE_PREFIX -Z translate-remapped-path-to-local-path=no -Z ignore-directory-in-diagnostics-source-blocks=/cargo -Z ignore-directory-in-diagnostics-source-blocks=/checkout/vendor -C instrument-coverage -Z no-profiler-runtime -C opt-level=2 -C prefer-dynamic -C rpath -C debuginfo=0 -Z coverage-options=branch
query stack during panic:
query stack during panic:
#0 [mir_built] building MIR for `branch_not`
#1 [check_unsafety] unsafety-checking `branch_not`
end of query stack
thread 'rustc' panicked at compiler/rustc_mir_build/src/build/coverageinfo.rs:197:23:
attempt to subtract with overflow
stack backtrace:
stack backtrace:
   0: rust_begin_unwind
   1: core::panicking::panic_fmt
   2: core::panicking::panic_const::panic_const_sub_overflow
   3: <rustc_mir_build::build::coverageinfo::BranchInfoBuilder>::into_done
   4: <rustc_mir_build::build::Builder>::finish
   5: rustc_mir_build::build::mir_build
   6: rustc_mir_transform::mir_built
      [... omitted 2 frames ...]
   7: rustc_mir_build::check_unsafety::check_unsafety
      [... omitted 2 frames ...]
   8: <rustc_middle::hir::map::Map>::par_body_owners::<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}
   9: std::panicking::try::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_data_structures::sync::parallel::enabled::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::hir::map::Map>::par_body_owners<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#0}::{closure#0}>>
  10: <rustc_data_structures::sync::parallel::ParallelGuard>::run::<(), rustc_data_structures::sync::parallel::enabled::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::hir::map::Map>::par_body_owners<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#1}::{closure#0}>
  11: <rustc_session::session::Session>::time::<(), rustc_interface::passes::run_required_analyses::{closure#1}>
  12: rustc_interface::passes::analysis
      [... omitted 2 frames ...]
  14: <rustc_interface::interface::Compiler>::enter::<rustc_driver_impl::run_compiler::{closure#0}::{closure#1}, core::result::Result<core::option::Option<rustc_interface::queries::Linker>, rustc_span::ErrorGuaranteed>>
  15: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}::{closure#0}::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>
  16: rustc_span::create_session_globals_then::<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}::{closure#0}::{closure#0}>
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---
note: please make sure that you have updated to the latest nightly

note: rustc 1.79.0-nightly (2789fdad0 2024-04-23) running on x86_64-unknown-linux-gnu

note: compiler flags: -Z threads=1 -Z simulate-remapped-rust-src-base=/rustc/FAKE_PREFIX -Z translate-remapped-path-to-local-path=no -Z ignore-directory-in-diagnostics-source-blocks=/cargo -Z ignore-directory-in-diagnostics-source-blocks=/checkout/vendor -C instrument-coverage -Z no-profiler-runtime -C opt-level=2 -C prefer-dynamic -C rpath -C debuginfo=0 -Z coverage-options=branch
query stack during panic:
query stack during panic:
#0 [mir_built] building MIR for `branch_not_as`
#1 [check_unsafety] unsafety-checking `branch_not_as`
end of query stack
thread 'rustc' panicked at compiler/rustc_mir_build/src/build/coverageinfo.rs:197:23:
attempt to subtract with overflow
stack backtrace:
stack backtrace:
   0: rust_begin_unwind
   1: core::panicking::panic_fmt
   2: core::panicking::panic_const::panic_const_sub_overflow
   3: <rustc_mir_build::build::coverageinfo::BranchInfoBuilder>::into_done
   4: <rustc_mir_build::build::Builder>::finish
   5: rustc_mir_build::build::mir_build
   6: rustc_mir_transform::mir_built
      [... omitted 2 frames ...]
   7: rustc_mir_build::check_unsafety::check_unsafety
      [... omitted 2 frames ...]
   8: <rustc_middle::hir::map::Map>::par_body_owners::<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}
   9: std::panicking::try::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_data_structures::sync::parallel::enabled::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::hir::map::Map>::par_body_owners<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#0}::{closure#0}>>
  10: <rustc_data_structures::sync::parallel::ParallelGuard>::run::<(), rustc_data_structures::sync::parallel::enabled::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::hir::map::Map>::par_body_owners<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#1}::{closure#0}>
  11: <rustc_session::session::Session>::time::<(), rustc_interface::passes::run_required_analyses::{closure#1}>
  12: rustc_interface::passes::analysis
      [... omitted 2 frames ...]
  14: <rustc_interface::interface::Compiler>::enter::<rustc_driver_impl::run_compiler::{closure#0}::{closure#1}, core::result::Result<core::option::Option<rustc_interface::queries::Linker>, rustc_span::ErrorGuaranteed>>
  15: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}::{closure#0}::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>
  16: rustc_span::create_session_globals_then::<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}::{closure#0}::{closure#0}>
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---
note: please make sure that you have updated to the latest nightly

note: rustc 1.79.0-nightly (2789fdad0 2024-04-23) running on x86_64-unknown-linux-gnu

note: compiler flags: -Z threads=1 -Z simulate-remapped-rust-src-base=/rustc/FAKE_PREFIX -Z translate-remapped-path-to-local-path=no -Z ignore-directory-in-diagnostics-source-blocks=/cargo -Z ignore-directory-in-diagnostics-source-blocks=/checkout/vendor -C instrument-coverage -Z no-profiler-runtime -C opt-level=2 -C prefer-dynamic -C rpath -C debuginfo=0 -Z coverage-options=branch
query stack during panic:
query stack during panic:
#0 [mir_built] building MIR for `branch_and`
#1 [check_unsafety] unsafety-checking `branch_and`
end of query stack
thread 'rustc' panicked at compiler/rustc_mir_build/src/build/coverageinfo.rs:197:23:
attempt to subtract with overflow
stack backtrace:
stack backtrace:
   0: rust_begin_unwind
   1: core::panicking::panic_fmt
   2: core::panicking::panic_const::panic_const_sub_overflow
   3: <rustc_mir_build::build::coverageinfo::BranchInfoBuilder>::into_done
   4: <rustc_mir_build::build::Builder>::finish
   5: rustc_mir_build::build::mir_build
   6: rustc_mir_transform::mir_built
      [... omitted 2 frames ...]
   7: rustc_mir_build::check_unsafety::check_unsafety
      [... omitted 2 frames ...]
   8: <rustc_middle::hir::map::Map>::par_body_owners::<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}
   9: std::panicking::try::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_data_structures::sync::parallel::enabled::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::hir::map::Map>::par_body_owners<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#0}::{closure#0}>>
  10: <rustc_data_structures::sync::parallel::ParallelGuard>::run::<(), rustc_data_structures::sync::parallel::enabled::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::hir::map::Map>::par_body_owners<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#1}::{closure#0}>
  11: <rustc_session::session::Session>::time::<(), rustc_interface::passes::run_required_analyses::{closure#1}>
  12: rustc_interface::passes::analysis
      [... omitted 2 frames ...]
  14: <rustc_interface::interface::Compiler>::enter::<rustc_driver_impl::run_compiler::{closure#0}::{closure#1}, core::result::Result<core::option::Option<rustc_interface::queries::Linker>, rustc_span::ErrorGuaranteed>>
  15: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}::{closure#0}::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>
  16: rustc_span::create_session_globals_then::<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}::{closure#0}::{closure#0}>
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---
note: please make sure that you have updated to the latest nightly

note: rustc 1.79.0-nightly (2789fdad0 2024-04-23) running on x86_64-unknown-linux-gnu

note: compiler flags: -Z threads=1 -Z simulate-remapped-rust-src-base=/rustc/FAKE_PREFIX -Z translate-remapped-path-to-local-path=no -Z ignore-directory-in-diagnostics-source-blocks=/cargo -Z ignore-directory-in-diagnostics-source-blocks=/checkout/vendor -C instrument-coverage -Z no-profiler-runtime -C opt-level=2 -C prefer-dynamic -C rpath -C debuginfo=0 -Z coverage-options=branch
query stack during panic:
query stack during panic:
#0 [mir_built] building MIR for `branch_or`
#1 [check_unsafety] unsafety-checking `branch_or`
end of query stack
------------------------------------------



---- [coverage-map] tests/coverage/branch/lazy-boolean.rs stdout ----

error: compilation failed!
status: exit status: 101
command: env -u RUSTC_LOG_COLOR RUSTC_ICE="0" RUST_BACKTRACE="short" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/coverage/branch/lazy-boolean.rs" "-Zthreads=1" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Z" "ignore-directory-in-diagnostics-source-blocks=/cargo" "-Z" "ignore-directory-in-diagnostics-source-blocks=/checkout/vendor" "--sysroot" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2" "--target=x86_64-unknown-linux-gnu" "-Cinstrument-coverage" "-Zno-profiler-runtime" "-Copt-level=2" "--emit" "llvm-ir" "-C" "prefer-dynamic" "-o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/coverage/branch/lazy-boolean.coverage-map/lazy-boolean.ll" "-A" "internal_features" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/coverage/branch/lazy-boolean.coverage-map/auxiliary" "--edition=2021" "-Zcoverage-options=branch"
--- stderr -------------------------------
thread 'rustc' panicked at compiler/rustc_mir_build/src/build/coverageinfo.rs:197:23:
attempt to subtract with overflow
stack backtrace:
stack backtrace:
   0: rust_begin_unwind
   1: core::panicking::panic_fmt
   2: core::panicking::panic_const::panic_const_sub_overflow
   3: <rustc_mir_build::build::coverageinfo::BranchInfoBuilder>::into_done
   4: <rustc_mir_build::build::Builder>::finish
   5: rustc_mir_build::build::mir_build
   6: rustc_mir_transform::mir_built
      [... omitted 2 frames ...]
   7: rustc_mir_build::check_unsafety::check_unsafety
      [... omitted 2 frames ...]
   8: <rustc_middle::hir::map::Map>::par_body_owners::<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}
   9: std::panicking::try::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_data_structures::sync::parallel::enabled::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::hir::map::Map>::par_body_owners<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#0}::{closure#0}>>
  10: <rustc_data_structures::sync::parallel::ParallelGuard>::run::<(), rustc_data_structures::sync::parallel::enabled::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::hir::map::Map>::par_body_owners<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#1}::{closure#0}>
  11: <rustc_session::session::Session>::time::<(), rustc_interface::passes::run_required_analyses::{closure#1}>
  12: rustc_interface::passes::analysis
      [... omitted 2 frames ...]
  14: <rustc_interface::interface::Compiler>::enter::<rustc_driver_impl::run_compiler::{closure#0}::{closure#1}, core::result::Result<core::option::Option<rustc_interface::queries::Linker>, rustc_span::ErrorGuaranteed>>
  15: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}::{closure#0}::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>
  16: rustc_span::create_session_globals_then::<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}::{closure#0}::{closure#0}>
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---
note: please make sure that you have updated to the latest nightly

note: rustc 1.79.0-nightly (2789fdad0 2024-04-23) running on x86_64-unknown-linux-gnu

note: compiler flags: -Z threads=1 -Z simulate-remapped-rust-src-base=/rustc/FAKE_PREFIX -Z translate-remapped-path-to-local-path=no -Z ignore-directory-in-diagnostics-source-blocks=/cargo -Z ignore-directory-in-diagnostics-source-blocks=/checkout/vendor -C instrument-coverage -Z no-profiler-runtime -C opt-level=2 -C prefer-dynamic -C rpath -C debuginfo=0 -Z coverage-options=branch
query stack during panic:
query stack during panic:
#0 [mir_built] building MIR for `branch_and`
#1 [check_unsafety] unsafety-checking `branch_and`
end of query stack
thread 'rustc' panicked at compiler/rustc_mir_build/src/build/coverageinfo.rs:197:23:
attempt to subtract with overflow
stack backtrace:
stack backtrace:
   0: rust_begin_unwind
   1: core::panicking::panic_fmt
   2: core::panicking::panic_const::panic_const_sub_overflow
   3: <rustc_mir_build::build::coverageinfo::BranchInfoBuilder>::into_done
   4: <rustc_mir_build::build::Builder>::finish
   5: rustc_mir_build::build::mir_build
   6: rustc_mir_transform::mir_built
      [... omitted 2 frames ...]
   7: rustc_mir_build::check_unsafety::check_unsafety
      [... omitted 2 frames ...]
   8: <rustc_middle::hir::map::Map>::par_body_owners::<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}
   9: std::panicking::try::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_data_structures::sync::parallel::enabled::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::hir::map::Map>::par_body_owners<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#0}::{closure#0}>>
  10: <rustc_data_structures::sync::parallel::ParallelGuard>::run::<(), rustc_data_structures::sync::parallel::enabled::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::hir::map::Map>::par_body_owners<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#1}::{closure#0}>
  11: <rustc_session::session::Session>::time::<(), rustc_interface::passes::run_required_analyses::{closure#1}>
  12: rustc_interface::passes::analysis
      [... omitted 2 frames ...]
  14: <rustc_interface::interface::Compiler>::enter::<rustc_driver_impl::run_compiler::{closure#0}::{closure#1}, core::result::Result<core::option::Option<rustc_interface::queries::Linker>, rustc_span::ErrorGuaranteed>>
  15: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}::{closure#0}::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>
  16: rustc_span::create_session_globals_then::<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}::{closure#0}::{closure#0}>
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---
note: please make sure that you have updated to the latest nightly

note: rustc 1.79.0-nightly (2789fdad0 2024-04-23) running on x86_64-unknown-linux-gnu

note: compiler flags: -Z threads=1 -Z simulate-remapped-rust-src-base=/rustc/FAKE_PREFIX -Z translate-remapped-path-to-local-path=no -Z ignore-directory-in-diagnostics-source-blocks=/cargo -Z ignore-directory-in-diagnostics-source-blocks=/checkout/vendor -C instrument-coverage -Z no-profiler-runtime -C opt-level=2 -C prefer-dynamic -C rpath -C debuginfo=0 -Z coverage-options=branch
query stack during panic:
query stack during panic:
#0 [mir_built] building MIR for `branch_or`
#1 [check_unsafety] unsafety-checking `branch_or`
end of query stack
thread 'rustc' panicked at compiler/rustc_mir_build/src/build/coverageinfo.rs:197:23:
attempt to subtract with overflow
stack backtrace:
stack backtrace:
   0: rust_begin_unwind
   1: core::panicking::panic_fmt
   2: core::panicking::panic_const::panic_const_sub_overflow
   3: <rustc_mir_build::build::coverageinfo::BranchInfoBuilder>::into_done
   4: <rustc_mir_build::build::Builder>::finish
   5: rustc_mir_build::build::mir_build
   6: rustc_mir_transform::mir_built
      [... omitted 2 frames ...]
   7: rustc_mir_build::check_unsafety::check_unsafety
      [... omitted 2 frames ...]
   8: <rustc_middle::hir::map::Map>::par_body_owners::<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}
   9: std::panicking::try::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_data_structures::sync::parallel::enabled::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::hir::map::Map>::par_body_owners<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#0}::{closure#0}>>
  10: <rustc_data_structures::sync::parallel::ParallelGuard>::run::<(), rustc_data_structures::sync::parallel::enabled::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::hir::map::Map>::par_body_owners<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#1}::{closure#0}>
  11: <rustc_session::session::Session>::time::<(), rustc_interface::passes::run_required_analyses::{closure#1}>
  12: rustc_interface::passes::analysis
      [... omitted 2 frames ...]
  14: <rustc_interface::interface::Compiler>::enter::<rustc_driver_impl::run_compiler::{closure#0}::{closure#1}, core::result::Result<core::option::Option<rustc_interface::queries::Linker>, rustc_span::ErrorGuaranteed>>
  15: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}::{closure#0}::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>
  16: rustc_span::create_session_globals_then::<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}::{closure#0}::{closure#0}>
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---
note: please make sure that you have updated to the latest nightly

note: rustc 1.79.0-nightly (2789fdad0 2024-04-23) running on x86_64-unknown-linux-gnu

note: compiler flags: -Z threads=1 -Z simulate-remapped-rust-src-base=/rustc/FAKE_PREFIX -Z translate-remapped-path-to-local-path=no -Z ignore-directory-in-diagnostics-source-blocks=/cargo -Z ignore-directory-in-diagnostics-source-blocks=/checkout/vendor -C instrument-coverage -Z no-profiler-runtime -C opt-level=2 -C prefer-dynamic -C rpath -C debuginfo=0 -Z coverage-options=branch
query stack during panic:
query stack during panic:
#0 [mir_built] building MIR for `chain`
#1 [check_unsafety] unsafety-checking `chain`
end of query stack
thread 'rustc' panicked at compiler/rustc_mir_build/src/build/coverageinfo.rs:197:23:
attempt to subtract with overflow
stack backtrace:
stack backtrace:
   0: rust_begin_unwind
   1: core::panicking::panic_fmt
   2: core::panicking::panic_const::panic_const_sub_overflow
   3: <rustc_mir_build::build::coverageinfo::BranchInfoBuilder>::into_done
   4: <rustc_mir_build::build::Builder>::finish
   5: rustc_mir_build::build::mir_build
   6: rustc_mir_transform::mir_built
      [... omitted 2 frames ...]
   7: rustc_mir_build::check_unsafety::check_unsafety
      [... omitted 2 frames ...]
   8: <rustc_middle::hir::map::Map>::par_body_owners::<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}
   9: std::panicking::try::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_data_structures::sync::parallel::enabled::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::hir::map::Map>::par_body_owners<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#0}::{closure#0}>>
  10: <rustc_data_structures::sync::parallel::ParallelGuard>::run::<(), rustc_data_structures::sync::parallel::enabled::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::hir::map::Map>::par_body_owners<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#1}::{closure#0}>
  11: <rustc_session::session::Session>::time::<(), rustc_interface::passes::run_required_analyses::{closure#1}>
  12: rustc_interface::passes::analysis
      [... omitted 2 frames ...]
  14: <rustc_interface::interface::Compiler>::enter::<rustc_driver_impl::run_compiler::{closure#0}::{closure#1}, core::result::Result<core::option::Option<rustc_interface::queries::Linker>, rustc_span::ErrorGuaranteed>>
  15: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}::{closure#0}::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>
  16: rustc_span::create_session_globals_then::<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}::{closure#0}::{closure#0}>
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---
note: please make sure that you have updated to the latest nightly

note: rustc 1.79.0-nightly (2789fdad0 2024-04-23) running on x86_64-unknown-linux-gnu

note: compiler flags: -Z threads=1 -Z simulate-remapped-rust-src-base=/rustc/FAKE_PREFIX -Z translate-remapped-path-to-local-path=no -Z ignore-directory-in-diagnostics-source-blocks=/cargo -Z ignore-directory-in-diagnostics-source-blocks=/checkout/vendor -C instrument-coverage -Z no-profiler-runtime -C opt-level=2 -C prefer-dynamic -C rpath -C debuginfo=0 -Z coverage-options=branch
query stack during panic:
query stack during panic:
#0 [mir_built] building MIR for `nested_mixed`
#1 [check_unsafety] unsafety-checking `nested_mixed`
end of query stack
------------------------------------------



---- [coverage-map] tests/coverage/branch/match-arms.rs stdout ----

error: compilation failed!
status: exit status: 101
command: env -u RUSTC_LOG_COLOR RUSTC_ICE="0" RUST_BACKTRACE="short" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/coverage/branch/match-arms.rs" "-Zthreads=1" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Z" "ignore-directory-in-diagnostics-source-blocks=/cargo" "-Z" "ignore-directory-in-diagnostics-source-blocks=/checkout/vendor" "--sysroot" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2" "--target=x86_64-unknown-linux-gnu" "-Cinstrument-coverage" "-Zno-profiler-runtime" "-Copt-level=2" "--emit" "llvm-ir" "-C" "prefer-dynamic" "-o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/coverage/branch/match-arms.coverage-map/match-arms.ll" "-A" "internal_features" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/coverage/branch/match-arms.coverage-map/auxiliary" "--edition=2021" "-Zcoverage-options=branch"
--- stderr -------------------------------
thread 'rustc' panicked at compiler/rustc_mir_build/src/build/coverageinfo.rs:197:23:
attempt to subtract with overflow
stack backtrace:
stack backtrace:
   0: rust_begin_unwind
   1: core::panicking::panic_fmt
   2: core::panicking::panic_const::panic_const_sub_overflow
   3: <rustc_mir_build::build::coverageinfo::BranchInfoBuilder>::into_done
   4: <rustc_mir_build::build::Builder>::finish
   5: rustc_mir_build::build::mir_build
   6: rustc_mir_transform::mir_built
      [... omitted 2 frames ...]
   7: rustc_mir_build::check_unsafety::check_unsafety
      [... omitted 2 frames ...]
   8: <rustc_middle::hir::map::Map>::par_body_owners::<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}
   9: std::panicking::try::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_data_structures::sync::parallel::enabled::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::hir::map::Map>::par_body_owners<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#0}::{closure#0}>>
  10: <rustc_data_structures::sync::parallel::ParallelGuard>::run::<(), rustc_data_structures::sync::parallel::enabled::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::hir::map::Map>::par_body_owners<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#1}::{closure#0}>
  11: <rustc_session::session::Session>::time::<(), rustc_interface::passes::run_required_analyses::{closure#1}>
  12: rustc_interface::passes::analysis
      [... omitted 2 frames ...]
  14: <rustc_interface::interface::Compiler>::enter::<rustc_driver_impl::run_compiler::{closure#0}::{closure#1}, core::result::Result<core::option::Option<rustc_interface::queries::Linker>, rustc_span::ErrorGuaranteed>>
  15: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}::{closure#0}::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>
  16: rustc_span::create_session_globals_then::<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}::{closure#0}::{closure#0}>
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---
note: please make sure that you have updated to the latest nightly

note: rustc 1.79.0-nightly (2789fdad0 2024-04-23) running on x86_64-unknown-linux-gnu

note: compiler flags: -Z threads=1 -Z simulate-remapped-rust-src-base=/rustc/FAKE_PREFIX -Z translate-remapped-path-to-local-path=no -Z ignore-directory-in-diagnostics-source-blocks=/cargo -Z ignore-directory-in-diagnostics-source-blocks=/checkout/vendor -C instrument-coverage -Z no-profiler-runtime -C opt-level=2 -C prefer-dynamic -C rpath -C debuginfo=0 -Z coverage-options=branch
query stack during panic:
query stack during panic:
#0 [mir_built] building MIR for `guards`
#1 [check_unsafety] unsafety-checking `guards`
end of query stack
------------------------------------------



---- [coverage-map] tests/coverage/branch/while.rs stdout ----

error: compilation failed!
status: exit status: 101
command: env -u RUSTC_LOG_COLOR RUSTC_ICE="0" RUST_BACKTRACE="short" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/coverage/branch/while.rs" "-Zthreads=1" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Z" "ignore-directory-in-diagnostics-source-blocks=/cargo" "-Z" "ignore-directory-in-diagnostics-source-blocks=/checkout/vendor" "--sysroot" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage2" "--target=x86_64-unknown-linux-gnu" "-Cinstrument-coverage" "-Zno-profiler-runtime" "-Copt-level=2" "--emit" "llvm-ir" "-C" "prefer-dynamic" "-o" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/coverage/branch/while.coverage-map/while.ll" "-A" "internal_features" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/x86_64-unknown-linux-gnu/native/rust-test-helpers" "-L" "/checkout/obj/build/x86_64-unknown-linux-gnu/test/coverage/branch/while.coverage-map/auxiliary" "--edition=2021" "-Zcoverage-options=branch"
--- stderr -------------------------------
thread 'rustc' panicked at compiler/rustc_mir_build/src/build/coverageinfo.rs:197:23:
attempt to subtract with overflow
stack backtrace:
stack backtrace:
   0: rust_begin_unwind
   1: core::panicking::panic_fmt
   2: core::panicking::panic_const::panic_const_sub_overflow
   3: <rustc_mir_build::build::coverageinfo::BranchInfoBuilder>::into_done
   4: <rustc_mir_build::build::Builder>::finish
   5: rustc_mir_build::build::mir_build
   6: rustc_mir_transform::mir_built
      [... omitted 2 frames ...]
   7: rustc_mir_build::check_unsafety::check_unsafety
      [... omitted 2 frames ...]
   8: <rustc_middle::hir::map::Map>::par_body_owners::<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}
   9: std::panicking::try::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_data_structures::sync::parallel::enabled::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::hir::map::Map>::par_body_owners<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#0}::{closure#0}>>
  10: <rustc_data_structures::sync::parallel::ParallelGuard>::run::<(), rustc_data_structures::sync::parallel::enabled::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::hir::map::Map>::par_body_owners<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#1}::{closure#0}>
  11: <rustc_session::session::Session>::time::<(), rustc_interface::passes::run_required_analyses::{closure#1}>
  12: rustc_interface::passes::analysis
      [... omitted 2 frames ...]
  14: <rustc_interface::interface::Compiler>::enter::<rustc_driver_impl::run_compiler::{closure#0}::{closure#1}, core::result::Result<core::option::Option<rustc_interface::queries::Linker>, rustc_span::ErrorGuaranteed>>
  15: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}::{closure#0}::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>
  16: rustc_span::create_session_globals_then::<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}::{closure#0}::{closure#0}>
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---
note: please make sure that you have updated to the latest nightly

note: rustc 1.79.0-nightly (2789fdad0 2024-04-23) running on x86_64-unknown-linux-gnu

note: compiler flags: -Z threads=1 -Z simulate-remapped-rust-src-base=/rustc/FAKE_PREFIX -Z translate-remapped-path-to-local-path=no -Z ignore-directory-in-diagnostics-source-blocks=/cargo -Z ignore-directory-in-diagnostics-source-blocks=/checkout/vendor -C instrument-coverage -Z no-profiler-runtime -C opt-level=2 -C prefer-dynamic -C rpath -C debuginfo=0 -Z coverage-options=branch
query stack during panic:
query stack during panic:
#0 [mir_built] building MIR for `while_cond`
#1 [check_unsafety] unsafety-checking `while_cond`
end of query stack
thread 'rustc' panicked at compiler/rustc_mir_build/src/build/coverageinfo.rs:197:23:
attempt to subtract with overflow
stack backtrace:
stack backtrace:
   0: rust_begin_unwind
   1: core::panicking::panic_fmt
   2: core::panicking::panic_const::panic_const_sub_overflow
   3: <rustc_mir_build::build::coverageinfo::BranchInfoBuilder>::into_done
   4: <rustc_mir_build::build::Builder>::finish
   5: rustc_mir_build::build::mir_build
   6: rustc_mir_transform::mir_built
      [... omitted 2 frames ...]
   7: rustc_mir_build::check_unsafety::check_unsafety
      [... omitted 2 frames ...]
   8: <rustc_middle::hir::map::Map>::par_body_owners::<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}
   9: std::panicking::try::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_data_structures::sync::parallel::enabled::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::hir::map::Map>::par_body_owners<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#0}::{closure#0}>>
  10: <rustc_data_structures::sync::parallel::ParallelGuard>::run::<(), rustc_data_structures::sync::parallel::enabled::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::hir::map::Map>::par_body_owners<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#1}::{closure#0}>
  11: <rustc_session::session::Session>::time::<(), rustc_interface::passes::run_required_analyses::{closure#1}>
  12: rustc_interface::passes::analysis
      [... omitted 2 frames ...]
  14: <rustc_interface::interface::Compiler>::enter::<rustc_driver_impl::run_compiler::{closure#0}::{closure#1}, core::result::Result<core::option::Option<rustc_interface::queries::Linker>, rustc_span::ErrorGuaranteed>>
  15: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}::{closure#0}::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>
  16: rustc_span::create_session_globals_then::<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}::{closure#0}::{closure#0}>
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---
note: please make sure that you have updated to the latest nightly

note: rustc 1.79.0-nightly (2789fdad0 2024-04-23) running on x86_64-unknown-linux-gnu

note: compiler flags: -Z threads=1 -Z simulate-remapped-rust-src-base=/rustc/FAKE_PREFIX -Z translate-remapped-path-to-local-path=no -Z ignore-directory-in-diagnostics-source-blocks=/cargo -Z ignore-directory-in-diagnostics-source-blocks=/checkout/vendor -C instrument-coverage -Z no-profiler-runtime -C opt-level=2 -C prefer-dynamic -C rpath -C debuginfo=0 -Z coverage-options=branch
query stack during panic:
query stack during panic:
#0 [mir_built] building MIR for `while_cond_not`
#1 [check_unsafety] unsafety-checking `while_cond_not`
end of query stack
thread 'rustc' panicked at compiler/rustc_mir_build/src/build/coverageinfo.rs:197:23:
attempt to subtract with overflow
stack backtrace:
stack backtrace:
   0: rust_begin_unwind
   1: core::panicking::panic_fmt
   2: core::panicking::panic_const::panic_const_sub_overflow
   3: <rustc_mir_build::build::coverageinfo::BranchInfoBuilder>::into_done
   4: <rustc_mir_build::build::Builder>::finish
   5: rustc_mir_build::build::mir_build
   6: rustc_mir_transform::mir_built
      [... omitted 2 frames ...]
   7: rustc_mir_build::check_unsafety::check_unsafety
      [... omitted 2 frames ...]
   8: <rustc_middle::hir::map::Map>::par_body_owners::<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}
   9: std::panicking::try::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_data_structures::sync::parallel::enabled::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::hir::map::Map>::par_body_owners<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#0}::{closure#0}>>
  10: <rustc_data_structures::sync::parallel::ParallelGuard>::run::<(), rustc_data_structures::sync::parallel::enabled::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::hir::map::Map>::par_body_owners<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#1}::{closure#0}>
  11: <rustc_session::session::Session>::time::<(), rustc_interface::passes::run_required_analyses::{closure#1}>
  12: rustc_interface::passes::analysis
      [... omitted 2 frames ...]
  14: <rustc_interface::interface::Compiler>::enter::<rustc_driver_impl::run_compiler::{closure#0}::{closure#1}, core::result::Result<core::option::Option<rustc_interface::queries::Linker>, rustc_span::ErrorGuaranteed>>
  15: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}::{closure#0}::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>
  16: rustc_span::create_session_globals_then::<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}::{closure#0}::{closure#0}>
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---
note: please make sure that you have updated to the latest nightly

note: rustc 1.79.0-nightly (2789fdad0 2024-04-23) running on x86_64-unknown-linux-gnu

note: compiler flags: -Z threads=1 -Z simulate-remapped-rust-src-base=/rustc/FAKE_PREFIX -Z translate-remapped-path-to-local-path=no -Z ignore-directory-in-diagnostics-source-blocks=/cargo -Z ignore-directory-in-diagnostics-source-blocks=/checkout/vendor -C instrument-coverage -Z no-profiler-runtime -C opt-level=2 -C prefer-dynamic -C rpath -C debuginfo=0 -Z coverage-options=branch
query stack during panic:
query stack during panic:
#0 [mir_built] building MIR for `while_op_and`
#1 [check_unsafety] unsafety-checking `while_op_and`
end of query stack
thread 'rustc' panicked at compiler/rustc_mir_build/src/build/coverageinfo.rs:197:23:
attempt to subtract with overflow
stack backtrace:
stack backtrace:
   0: rust_begin_unwind
   1: core::panicking::panic_fmt
   2: core::panicking::panic_const::panic_const_sub_overflow
   3: <rustc_mir_build::build::coverageinfo::BranchInfoBuilder>::into_done
   4: <rustc_mir_build::build::Builder>::finish
   5: rustc_mir_build::build::mir_build
   6: rustc_mir_transform::mir_built
      [... omitted 2 frames ...]
   7: rustc_mir_build::check_unsafety::check_unsafety
      [... omitted 2 frames ...]
   8: <rustc_middle::hir::map::Map>::par_body_owners::<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}
   9: std::panicking::try::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_data_structures::sync::parallel::enabled::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::hir::map::Map>::par_body_owners<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#0}::{closure#0}>>
  10: <rustc_data_structures::sync::parallel::ParallelGuard>::run::<(), rustc_data_structures::sync::parallel::enabled::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::hir::map::Map>::par_body_owners<rustc_interface::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#1}::{closure#0}>
  11: <rustc_session::session::Session>::time::<(), rustc_interface::passes::run_required_analyses::{closure#1}>
  12: rustc_interface::passes::analysis
      [... omitted 2 frames ...]
  14: <rustc_interface::interface::Compiler>::enter::<rustc_driver_impl::run_compiler::{closure#0}::{closure#1}, core::result::Result<core::option::Option<rustc_interface::queries::Linker>, rustc_span::ErrorGuaranteed>>
  15: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}::{closure#0}::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>
  16: rustc_span::create_session_globals_then::<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_span::ErrorGuaranteed>, rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}, core::result::Result<(), rustc_span::ErrorGuaranteed>>::{closure#0}::{closure#0}::{closure#0}>
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
---
note: please make sure that you have updated to the latest nightly

note: rustc 1.79.0-nightly (2789fdad0 2024-04-23) running on x86_64-unknown-linux-gnu

note: compiler flags: -Z threads=1 -Z simulate-remapped-rust-src-base=/rustc/FAKE_PREFIX -Z translate-remapped-path-to-local-path=no -Z ignore-directory-in-diagnostics-source-blocks=/cargo -Z ignore-directory-in-diagnostics-source-blocks=/checkout/vendor -C instrument-coverage -Z no-profiler-runtime -C opt-level=2 -C prefer-dynamic -C rpath -C debuginfo=0 -Z coverage-options=branch
query stack during panic:
query stack during panic:
#0 [mir_built] building MIR for `while_op_or`
#1 [check_unsafety] unsafety-checking `while_op_or`
end of query stack
------------------------------------------


rust-log-analyzer avatar Apr 23 '24 06:04 rust-log-analyzer

Determining decision of pattern matching is more tricky than expected. I should write it down here in case someone feels confused about it. I'm not sure if rustc promises anything about the order of checked pattern (probably not), so the description here should be only taken as a specific way determined by the implementation of compiler when this pr is drafting.

We call patterns like ( A | B, C (X | Y) ) as candidates, each candidate has match pairs which indicates sub patterns and also has their "sub pairs". For example, candidate for ( A | B, C (X | Y) ) has match pairs for A | B (let's call it M1) and C (X | Y) (M2) separately. Also M1 has sub pairs for A and B and M2 has sub pair X | Y.

The first rule is that candidate is constructed where all match pairs representing | pattern (directly) are moved to last This is done at simplify_match_pairs. For the example compiler checks C first because A | B is or pattern while C is not directly (though it has an or sub pattern).

The second rule is the first pair will be removed and compiler will insert its sub pairs into the candidate's match pairs if it is "full matched" This is done at sort_candidate. So when compiler checks C first, it removes it and takes match pair representing X | Y as the candidate's last match pair. If the sub pattern in C were not |, it would be inserted at front of all or patterns as the code suggests.

Thus in all, the evaluate order of if let ( A | B, C (X | Y) ) = val is:

  1. Check whether val.1 is C,
  2. Check whether val.0 is A | B,
  3. Check whether val.1.0 is X | Y.

While the order of if let (A | B, C(X)) = val is:

  1. Check whether val.1 is C,
  2. Check whether val.1.0 is X,
  3. Check whether val.0 is A | B.

And the order of if let (A(Z), C) = val is:

  1. Check whether val.0 is A,
  2. Check whether val.0.0 is Z,
  3. Check whether val.1 is C.

A more mischievous example is if let (A | B, C (X | Y, Z), D) = val, its control flow would be like:

  1. Check whether val.1 is C,
  2. Check whether val.2 is D,
  3. Check whether val.1.1 is Z,
  4. Check whether val.0 is A | B,
  5. Check whether val.1.0 is X | Y.

Hopefully the decision structure were not taken as mischief by users.

Lambdaris avatar Apr 24 '24 09:04 Lambdaris

The job x86_64-gnu-llvm-17 failed! Check out the build log: (web) (plain)

Click to see the possible cause of the failure (guessed by this bot)
#16 exporting to docker image format
#16 sending tarball 28.5s done
#16 DONE 33.4s
##[endgroup]
Setting extra environment values for docker:  --env ENABLE_GCC_CODEGEN=1 --env GCC_EXEC_PREFIX=/usr/lib/gcc/
[CI_JOB_NAME=x86_64-gnu-llvm-17]
---
sccache: Starting the server...
##[group]Configure the build
configure: processing command line
configure: 
configure: build.configure-args := ['--build=x86_64-unknown-linux-gnu', '--llvm-root=/usr/lib/llvm-17', '--enable-llvm-link-shared', '--set', 'rust.thin-lto-import-instr-limit=10', '--set', 'change-id=99999999', '--enable-verbose-configure', '--enable-sccache', '--disable-manage-submodules', '--enable-locked-deps', '--enable-cargo-native-static', '--set', 'rust.codegen-units-std=1', '--set', 'dist.compression-profile=balanced', '--dist-compression-formats=xz', '--disable-dist-src', '--release-channel=nightly', '--enable-debug-assertions', '--enable-overflow-checks', '--enable-llvm-assertions', '--set', 'rust.verify-llvm-ir', '--set', 'rust.codegen-backends=llvm,cranelift,gcc', '--set', 'llvm.static-libstdcpp', '--enable-new-symbol-mangling']
configure: target.x86_64-unknown-linux-gnu.llvm-config := /usr/lib/llvm-17/bin/llvm-config
configure: llvm.link-shared     := True
configure: rust.thin-lto-import-instr-limit := 10
configure: change-id            := 99999999
---

error: unused import: `DecisionInfo`
 --> compiler/rustc_mir_build/src/build/coverageinfo.rs:7:74
  |
7 |     BlockMarkerId, BranchSpan, ConditionId, ConditionInfo, CoverageKind, DecisionInfo,

   Compiling rustc_const_eval v0.0.0 (/checkout/compiler/rustc_const_eval)
error: unused variable: `decision_builder`
   --> compiler/rustc_mir_build/src/build/coverageinfo.rs:220:18
   --> compiler/rustc_mir_build/src/build/coverageinfo.rs:220:18
    |
220 |         let Some(decision_builder) = self.matching_decision_builder else { return };
    |                  ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_decision_builder`
    = note: `-D unused-variables` implied by `-D warnings`
    = help: to override `-D warnings` add `#[allow(unused_variables)]`

error: unused variable: `end_block`
---

error[E0507]: cannot move out of `self.matching_decision_builder` as enum variant `Some` which is behind a mutable reference
   --> compiler/rustc_mir_build/src/build/coverageinfo.rs:220:38
    |
220 |         let Some(decision_builder) = self.matching_decision_builder else { return };
    |                  |
    |                  data moved here
    |                  data moved here
    |                  move occurs because `decision_builder` has type `MCDCDecisionBuilder`, which does not implement the `Copy` trait
help: consider borrowing the pattern binding
    |
    |
220 |         let Some(ref decision_builder) = self.matching_decision_builder else { return };

   Compiling rustc_sanitizers v0.0.0 (/checkout/compiler/rustc_sanitizers)
For more information about this error, try `rustc --explain E0507`.
error: could not compile `rustc_mir_build` (lib) due to 5 previous errors

rust-log-analyzer avatar Apr 28 '24 02:04 rust-log-analyzer

I have pushed an impractical commit to show design for constructing decisions and mcdc branches of pattern matching. Mostly is in MCDCDecisionBuilder. I'd like to finish it after merging #124255 and #124399 because the way to inject block marker should be changed. But still any comments about it are welcomed.

ZhuUx avatar Apr 28 '24 03:04 ZhuUx

The job x86_64-gnu-llvm-17 failed! Check out the build log: (web) (plain)

Click to see the possible cause of the failure (guessed by this bot)
#16 exporting to docker image format
#16 sending tarball 29.3s done
#16 DONE 34.4s
##[endgroup]
Setting extra environment values for docker:  --env ENABLE_GCC_CODEGEN=1 --env GCC_EXEC_PREFIX=/usr/lib/gcc/
[CI_JOB_NAME=x86_64-gnu-llvm-17]
---
sccache: Starting the server...
##[group]Configure the build
configure: processing command line
configure: 
configure: build.configure-args := ['--build=x86_64-unknown-linux-gnu', '--llvm-root=/usr/lib/llvm-17', '--enable-llvm-link-shared', '--set', 'rust.thin-lto-import-instr-limit=10', '--set', 'change-id=99999999', '--enable-verbose-configure', '--enable-sccache', '--disable-manage-submodules', '--enable-locked-deps', '--enable-cargo-native-static', '--set', 'rust.codegen-units-std=1', '--set', 'dist.compression-profile=balanced', '--dist-compression-formats=xz', '--disable-dist-src', '--release-channel=nightly', '--enable-debug-assertions', '--enable-overflow-checks', '--enable-llvm-assertions', '--set', 'rust.verify-llvm-ir', '--set', 'rust.codegen-backends=llvm,cranelift,gcc', '--set', 'llvm.static-libstdcpp', '--enable-new-symbol-mangling']
configure: target.x86_64-unknown-linux-gnu.llvm-config := /usr/lib/llvm-17/bin/llvm-config
configure: llvm.link-shared     := True
configure: rust.thin-lto-import-instr-limit := 10
configure: change-id            := 99999999
---

error: unused import: `DecisionInfo`
 --> compiler/rustc_mir_build/src/build/coverageinfo.rs:7:74
  |
7 |     BlockMarkerId, BranchSpan, ConditionId, ConditionInfo, CoverageKind, DecisionInfo,

   Compiling rustc_sanitizers v0.0.0 (/checkout/compiler/rustc_sanitizers)
error: unused variable: `decision_builder`
   --> compiler/rustc_mir_build/src/build/coverageinfo.rs:220:18
   --> compiler/rustc_mir_build/src/build/coverageinfo.rs:220:18
    |
220 |         let Some(decision_builder) = self.matching_decision_builder else { return };
    |                  ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_decision_builder`
    = note: `-D unused-variables` implied by `-D warnings`
    = help: to override `-D warnings` add `#[allow(unused_variables)]`

error: unused variable: `end_block`
---

error[E0507]: cannot move out of `self.matching_decision_builder` as enum variant `Some` which is behind a mutable reference
   --> compiler/rustc_mir_build/src/build/coverageinfo.rs:220:38
    |
220 |         let Some(decision_builder) = self.matching_decision_builder else { return };
    |                  |
    |                  data moved here
    |                  data moved here
    |                  move occurs because `decision_builder` has type `MCDCDecisionBuilder`, which does not implement the `Copy` trait
help: consider borrowing the pattern binding
    |
    |
220 |         let Some(ref decision_builder) = self.matching_decision_builder else { return };

For more information about this error, try `rustc --explain E0507`.
error: could not compile `rustc_mir_build` (lib) due to 5 previous errors
warning: build failed, waiting for other jobs to finish...

rust-log-analyzer avatar Apr 28 '24 09:04 rust-log-analyzer

:umbrella: The latest upstream changes (presumably #124255) made this pull request unmergeable. Please resolve the merge conflicts.

bors avatar Apr 29 '24 14:04 bors

Implementation for if-let has been drafted. Due to llvm does not support nested decisions yet tests for let-chains are not added. I should try to reduce coverage expressions and investigate if it works for matching guards later.

ZhuUx avatar May 10 '24 03:05 ZhuUx

:umbrella: The latest upstream changes (presumably #124972) made this pull request unmergeable. Please resolve the merge conflicts.

bors avatar May 10 '24 18:05 bors

The job mingw-check failed! Check out the build log: (web) (plain)

Click to see the possible cause of the failure (guessed by this bot)
    Checking rustc_middle v0.0.0 (/checkout/compiler/rustc_middle)
    Checking rustc_ast_passes v0.0.0 (/checkout/compiler/rustc_ast_passes)
    Checking rustc_expand v0.0.0 (/checkout/compiler/rustc_expand)
    Checking rustc_builtin_macros v0.0.0 (/checkout/compiler/rustc_builtin_macros)
error: you are deriving `Hash` but have implemented `PartialEq` explicitly
    |
    |
208 | #[derive(TyEncodable, TyDecodable, Hash, HashStable, TypeFoldable, TypeVisitable)]
    |
   ::: /checkout/library/core/src/hash/mod.rs:254:5
    |
254 |     pub macro Hash($item:item) {
254 |     pub macro Hash($item:item) {
    |     -------------- in this expansion of `#[derive(Hash)]`
    |
note: `PartialEq` implemented here
   --> compiler/rustc_middle/src/mir/coverage.rs:215:1
    |
215 | impl PartialEq for Expression {
    | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    = help: for further information visit https://rust-lang.github.io/rust-clippy/master/index.html#derived_hash_with_manual_eq
    = note: `-D clippy::derived-hash-with-manual-eq` implied by `-D clippy::correctness`
    = help: to override `-D clippy::correctness` add `#[allow(clippy::derived_hash_with_manual_eq)]`
error: could not compile `rustc_middle` (lib) due to 1 previous error
Build completed unsuccessfully in 0:01:33
  local time: Mon May 13 03:43:34 UTC 2024
  network time: Mon, 13 May 2024 03:43:34 GMT

rust-log-analyzer avatar May 13 '24 03:05 rust-log-analyzer

Now I think this job is almost done. Two major changes are introduced: mcdc tests for refutable patterns (if-let) and branch coverage for match guards, as the commits history shows.

I have tried to split the changes into relative independent commits, so review this commit by commit might be better to understand the implementation.

Let's launch review process now.
@rustbot review cc @Zalathar @RenjiSann

ZhuUx avatar May 13 '24 06:05 ZhuUx

Some changes occurred in match lowering

cc @Nadrieril

Some changes occurred in coverage instrumentation.

cc @Zalathar

Some changes occurred to MIR optimizations

cc @rust-lang/wg-mir-opt

Some changes occurred in coverage instrumentation.

cc @Zalathar

Some changes occurred in coverage instrumentation.

cc @Zalathar

Some changes occurred in coverage tests.

cc @Zalathar

rustbot avatar May 13 '24 06:05 rustbot

Change of MCDCBranchSpan introduces some duplicate coverage counter repressions apparently. I have managed to reduce them by this commit. However, as that commit shows, there have been many redundant expressions already so many other coverage maps need to be modified. I would submit it in another pr if it's necessary.

ZhuUx avatar May 13 '24 06:05 ZhuUx

Change of MCDCBranchSpan introduces some duplicate coverage counter repressions apparently. I have managed to reduce them by this commit. However, as that commit shows, there have been many redundant expressions already so many other coverage maps need to be modified. I would submit it in another pr if it's necessary.

Before doing any fancy rewriting of expressions, I think we should first apply https://github.com/rust-lang/rust/pull/124154/commits/6b609546d52cf99a97befb4247097f03d8c1da2e from #124154, so that expressions at that stage store their operands as BcbCounter, and only convert them to CovTerm right at the end.

Maybe we could have a separate PR that applies that change (or something like it), and then also applies some expression deduplication.

(Historically, I was reluctant to do expression simplification without a good use-case. But now that we do have good motivation from this issue and #124154, I think we can move forward with some expression simplification as a separate PR. That should help to make this PR simpler and easier to review.)

Zalathar avatar May 13 '24 11:05 Zalathar

Maybe we could have a separate PR that applies that change (or something like it), and then also applies some expression deduplication.

Sure I do think so. Thus that commit is not contained in this pr yet. I planned to commit it later. Or shall we rewrite expressions before these issues?

ZhuUx avatar May 14 '24 01:05 ZhuUx

Sure I do think so. Thus that commit is not contained in this pr yet. I planned to commit it later. Or shall we rewrite expressions before these issues?

Right now I'm working on a PR to simplify obviously-redundant expressions. My plan is to get it merged before this PR, since it should be a lot easier to review.

EDIT: Filed as #125106.

Zalathar avatar May 14 '24 03:05 Zalathar

:umbrella: The latest upstream changes (presumably #125331) made this pull request unmergeable. Please resolve the merge conflicts.

bors avatar May 20 '24 20:05 bors

Thanks to @Nadrieril now I could find a way to treat each arm in match statements as a decision.

The basic idea is to update test vectors of every decision in every arms. For instance,

match val {
    Pat::A | Pat::B => { /* update test vectors of `Pat::A | Pat::B` and `Pat::C | Pat::D` here */}
    Pat::C | Pat::D=> { /* update test vectors of `Pat::A | Pat::B`  and `Pat::C | Pat::D` here */}
    _ => { /* update test vectors of `Pat::A | Pat::B`  and `Pat::C | Pat::D` here */}
}

By updating test vectors of all decisions simultaneously we can deal with tests affecting different decisions. Fortunately we have implemented decision depth to such cases.

ZhuUx avatar May 21 '24 09:05 ZhuUx

Changed a bit to fit with constant folding. The main goal is to find all false blocks of branches and let the false term be sum of all counters in false blocks. Now it uses two variants of MCDCBranchMarker to represent markers for boolean expressions and pattern matching respectively. The difference on false blocks between boolean expressions and pattern matching is the true blocks and false blocks of boolean expressions possibly does not share same predecessor in nested decisions. While for pattern matching, false block might not exist when building mir (such false blocks are inserted when instrumenting coverage statements for bcb edges). Hence it's hard to find a unified way to get false blocks for boolean expressions and patterns. See comparison for details.

ZhuUx avatar May 28 '24 03:05 ZhuUx

Upon compiling my projects with "--coverage-options=mcdc", I have found there are still some work to do with pattern matching expanded by macros. I would like to investigate whether we should refactor this implementation for macros. @rustbot author

ZhuUx avatar May 30 '24 09:05 ZhuUx

Have refactored and tested much so that I'm a bit afraid there are too many details need to note in my implementation. I wonder is it possible to analyze the topological relationship among match pairs in all candidates without help of basic blocks? E.g, for statements

match val {
    (Pat::A | Pat::B, Pat::C) => {},
    (Pat::C, _) => {}
}

First we check if val.1 is Pat::C, if true, we check whetherval.1 is Pat::A | Pat::B, otherwise we check Pat::C. I know this evaluation order by check their test block and match block for now. But there might be some gaps between match block of one pattern and test block of its successor. It should be better if we knew the decision tree in a more accurate and simple way.

ZhuUx avatar Jun 13 '24 09:06 ZhuUx

I have thought about splitting match lowering into two steps: first step builds some kind of representation of the decision tree, second step transforms it to MIR. Would that be helpful for you? What could the decision tree look like that would be most convenient for you?

Nadrieril avatar Jun 13 '24 17:06 Nadrieril

I have thought about splitting match lowering into two steps: first step builds some kind of representation of the decision tree, second step transforms it to MIR. Would that be helpful for you? What could the decision tree look like that would be most convenient for you?

That is really worth expecting. As for this work, I would prefer the way like a boolean decision. That says, we can group target_match_pairs first and for each target, we have options then_target and otherwise_target. For example, considering such code

match value {
// Candidate 1, with match pairs `Pattern::A`, `Pattern::B`, 
(Pattern::A, Pattern::B) => {}, 
// Candidate 2, with match pairs `Pattern::A`, `Pattern::C | Pattern D`,
(Pattern::A, Pattern::C | Pattern D) => {},
// Candidate 3 with match pairs `Pattern::A`, `Pattern::E | Pattern::F`,
(Pattern::A, Pattern::E | Pattern F) => {},
 // Candidate 4, with no match pair
_ => {}
}

We can have targets:

  • Target 1: includes the three match pairs Pattern::A from candidate 1, candidate 2 and candidate 3.
  • Target 2: includes match pair Pattern::B,
  • Target 3: includes match pair Pattern::C | Pattern::D, and has sub targets including match pairs Pattern::B, Pattern::C separately.
  • Target 4: includes match pair Pattern::E | Pattern::F, and has sub targets including match pairs Pattern::E, Pattern::F separately.

Then if the evaluation order is same as current, we can draw a graph topo

then means then_target and otherswise means otherwise_target. As the figure shows, Target 1 has then_target: Some(Target 2) and otherwise_target: None, similar as Target 2. For Target 3 and Target 4, they both represents match pairs with TestCase::Or, so they have sub targets. Ellipses with dashed border just represent virtual control flow nodes, which have only one outdegree and can be viewed as then_target and otherwise_target of Target 3 and Target 4.

The main difference with current Candidate —— MatchPair structure is Target might include several match pairs from different candidates, so that Target only accounts for test.

Anyway this is just my premature thoughts from view of mcdc. If you have other thoughts you'd go with your way. I should be able to always get these relationship somewhere since they are intrinsic in matching decision.

ZhuUx avatar Jun 14 '24 02:06 ZhuUx

I've submitted https://github.com/rust-lang/rust/pull/126553 which at least makes or-pattern handling a little simpler

Nadrieril avatar Jun 16 '24 19:06 Nadrieril

Some changes occurred in coverage instrumentation.

cc @Zalathar

rustbot avatar Jul 10 '24 05:07 rustbot

This implementation is refactored and now it is based on #126677 and #126733 , as llvm-19 is coming. The actual work starts from Add CondBitmapReset statement.

The new version constructs decision tree in a different way. We use coverage_id to trace candidates and match pairs, then "matching_graph" is formed as match pairs are selected as test targets. The algorithm is described at the beginning of mcdc/matching.rs.

The previous implementation panics a lot when I compile projects syn, serde, etc, and the panic cases are added as tests in mcdc_misc.rs. Thankfully the new implementation works fine so far.

ZhuUx avatar Jul 10 '24 05:07 ZhuUx

The job mingw-check failed! Check out the build log: (web) (plain)

Click to see the possible cause of the failure (guessed by this bot)
#12 [ 5/11] RUN npm install [email protected] [email protected] -g
#12 4.934 npm WARN deprecated [email protected]: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
#12 5.010 npm WARN deprecated [email protected]: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.
#12 5.034 npm WARN deprecated [email protected]: Rimraf versions prior to v4 are no longer supported
#12 5.059 npm WARN deprecated @humanwhocodes/[email protected]: Use @eslint/config-array instead
#12 5.093 npm WARN deprecated [email protected]: Glob versions prior to v9 are no longer supported
#12 5.095 npm WARN deprecated @humanwhocodes/[email protected]: Use @eslint/object-schema instead
#12 6.147 
#12 6.147 added 205 packages in 6s
#12 6.148 
#12 6.148 20 packages are looking for funding
---
#16 3.556 Building wheels for collected packages: reuse
#16 3.557   Building wheel for reuse (pyproject.toml): started
#16 3.895   Building wheel for reuse (pyproject.toml): finished with status 'done'
#16 3.896   Created wheel for reuse: filename=reuse-1.1.0-cp310-cp310-manylinux_2_35_x86_64.whl size=181117 sha256=f5f58750481f69515c2c0d1d503daf565e2565c370d07fc6aeb95fe3498b4269
#16 3.897   Stored in directory: /tmp/pip-ephem-wheel-cache-vyxzteha/wheels/c2/3c/b9/1120c2ab4bd82694f7e6f0537dc5b9a085c13e2c69a8d0c76d
#16 3.899 Installing collected packages: boolean-py, binaryornot, setuptools, reuse, python-debian, markupsafe, license-expression, jinja2, chardet
#16 3.922   Attempting uninstall: setuptools
#16 3.923     Found existing installation: setuptools 59.6.0
#16 3.924     Not uninstalling setuptools at /usr/lib/python3/dist-packages, outside environment /usr
---

error: unresolved link to `C`
  --> compiler/rustc_mir_build/src/build/coverageinfo/mcdc/matching.rs:29:9
   |
29 | ///    [C]           [D]
   |         ^ no item named `C` in scope
   = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`

error: unresolved link to `D`
  --> compiler/rustc_mir_build/src/build/coverageinfo/mcdc/matching.rs:29:23
  --> compiler/rustc_mir_build/src/build/coverageinfo/mcdc/matching.rs:29:23
   |
29 | ///    [C]           [D]
   |                       ^ no item named `D` in scope
   = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`

error: unresolved link to `E`
  --> compiler/rustc_mir_build/src/build/coverageinfo/mcdc/matching.rs:31:22
---

error: unresolved link to `F`
  --> compiler/rustc_mir_build/src/build/coverageinfo/mcdc/matching.rs:35:8
   |
35 | ///   [F]           [G]
   |
   = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`

error: unresolved link to `G`
error: unresolved link to `G`
  --> compiler/rustc_mir_build/src/build/coverageinfo/mcdc/matching.rs:35:22
   |
35 | ///   [F]           [G]
   |                      ^ no item named `G` in scope
   = help: to escape `[` and `]` characters, add '\' before them like `\[` or `\]`

error: could not document `rustc_mir_build`
warning: build failed, waiting for other jobs to finish...
warning: build failed, waiting for other jobs to finish...


Command BootstrapCommand { command: cd "/checkout" && env -u MAKEFLAGS -u MFLAGS AR_x86_64_unknown_linux_gnu="ar" CARGO_INCREMENTAL="0" CARGO_PROFILE_RELEASE_DEBUG="0" CARGO_PROFILE_RELEASE_DEBUG_ASSERTIONS="true" CARGO_PROFILE_RELEASE_OVERFLOW_CHECKS="true" CARGO_PROFILE_RELEASE_STRIP="false" CARGO_TARGET_DIR="/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-rustc" CC_x86_64_unknown_linux_gnu="sccache cc" CFG_COMPILER_BUILD_TRIPLE="x86_64-unknown-linux-gnu" CFG_COMPILER_HOST_TRIPLE="x86_64-unknown-linux-gnu" CFG_DEFAULT_CODEGEN_BACKEND="llvm" CFG_LIBDIR_RELATIVE="lib" CFG_RELEASE="1.81.0-nightly" CFG_RELEASE_CHANNEL="nightly" CFG_USE_SELF_CONTAINED_LINKER="1" CFG_VERSION="1.81.0-nightly (00f627cde 2024-07-10)" CFG_VER_DATE="2024-07-10" CFG_VER_HASH="00f627cdeab875b2b21c8eb8ca3937b2374d2db5" CFLAGS_x86_64_unknown_linux_gnu="-ffunction-sections -fdata-sections -fPIC -m64" CXXFLAGS_x86_64_unknown_linux_gnu="-ffunction-sections -fdata-sections -fPIC -m64" CXX_x86_64_unknown_linux_gnu="sccache c++" LIBC_CHECK_CFG="1" LLVM_CONFIG="/checkout/obj/build/x86_64-unknown-linux-gnu/ci-llvm/bin/llvm-config" LLVM_LINK_SHARED="1" LLVM_NDEBUG="1" LLVM_RUSTLLVM="1" RANLIB_x86_64_unknown_linux_gnu="ar s" REAL_LIBRARY_PATH_VAR="LD_LIBRARY_PATH" RUSTBUILD_NATIVE_DIR="/checkout/obj/build/x86_64-unknown-linux-gnu/native" RUSTC="/checkout/obj/build/bootstrap/debug/rustc" RUSTC_BOOTSTRAP="1" RUSTC_BREAK_ON_ICE="1" RUSTC_ERROR_METADATA_DST="/checkout/obj/build/tmp/extended-error-metadata" RUSTC_FORCE_UNSTABLE="1" RUSTC_HOST_FLAGS="--cfg=bootstrap -Zunstable-options --check-cfg=cfg(bootstrap)" RUSTC_INSTALL_BINDIR="bin" RUSTC_LIBDIR="/checkout/obj/build/x86_64-unknown-linux-gnu/stage0/lib" RUSTC_LINT_FLAGS="-Wrust_2018_idioms -Wunused_lifetimes -Dwarnings" RUSTC_REAL="/checkout/obj/build/x86_64-unknown-linux-gnu/stage0/bin/rustc" RUSTC_SNAPSHOT="/checkout/obj/build/x86_64-unknown-linux-gnu/stage0/bin/rustc" RUSTC_SNAPSHOT_LIBDIR="/checkout/obj/build/x86_64-unknown-linux-gnu/stage0/lib" RUSTC_STAGE="0" RUSTC_SYSROOT="/checkout/obj/build/x86_64-unknown-linux-gnu/stage0-sysroot" RUSTC_TLS_MODEL_INITIAL_EXEC="1" RUSTC_VERBOSE="0" RUSTC_VERIFY_LLVM_IR="1" RUSTC_WRAPPER="/checkout/obj/build/bootstrap/debug/rustc" RUSTDOC="/checkout/obj/build/bootstrap/debug/rustdoc" RUSTDOCFLAGS="--cfg=bootstrap --cfg=windows_raw_dylib -Csymbol-mangling-version=v0 -Zunstable-options --check-cfg=cfg(bootstrap) --check-cfg=cfg(parallel_compiler) --document-private-items --document-hidden-items -Dwarnings -Wrustdoc::invalid_codeblock_attributes --crate-version 1.81.0-nightly\t(00f627cde\t2024-07-10) --cfg=parallel_compiler --document-private-items -Arustdoc::private-intra-doc-links --enable-index-page -Zunstable-options -Znormalize-docs --show-type-layout -Zcrate-attr=warn(rust_2018_idioms) --extern-html-root-url ena=https://docs.rs/ena/latest/" RUSTDOC_LIBDIR="/checkout/obj/build/x86_64-unknown-linux-gnu/stage0/lib" RUSTDOC_REAL="/checkout/obj/build/x86_64-unknown-linux-gnu/stage0/bin/rustdoc" RUSTFLAGS="--cfg=bootstrap --cfg=windows_raw_dylib -Csymbol-mangling-version=v0 -Zunstable-options --check-cfg=cfg(bootstrap) --check-cfg=cfg(parallel_compiler) -Zmacro-backtrace -Csplit-debuginfo=off -Zunstable-options -Wrustc::internal -Cprefer-dynamic --cfg=parallel_compiler -Clink-args=-Wl,-z,origin -Clink-args=-Wl,-rpath,$ORIGIN/../lib -Zon-broken-pipe=kill" RUST_TEST_THREADS="4" TERM="xterm" WINAPI_NO_BUNDLED_LIBRARIES="1" __CARGO_DEFAULT_LIB_METADATA="bootstrap" "/checkout/obj/build/x86_64-unknown-linux-gnu/stage0/bin/cargo" "doc" "--target" "x86_64-unknown-linux-gnu" "--release" "-Zbinary-dep-depinfo" "-j" "4" "--locked" "--color" "always" "--features" "llvm rustc_use_parallel_compiler" "--manifest-path" "/checkout/compiler/rustc/Cargo.toml" "-Zunstable-options" "-Zskip-rustdoc-fingerprint" "--no-deps" "-Zrustdoc-map" "-p" "rustc-main" "-p" "rustc_abi" "-p" "rustc_arena" "-p" "rustc_ast" "-p" "rustc_ast_ir" "-p" "rustc_ast_lowering" "-p" "rustc_ast_passes" "-p" "rustc_ast_pretty" "-p" "rustc_attr" "-p" "rustc_baked_icu_data" "-p" "rustc_borrowck" "-p" "rustc_builtin_macros" "-p" "rustc_codegen_llvm" "-p" "rustc_codegen_ssa" "-p" "rustc_const_eval" "-p" "rustc_data_structures" "-p" "rustc_driver" "-p" "rustc_driver_impl" "-p" "rustc_error_codes" "-p" "rustc_error_messages" "-p" "rustc_errors" "-p" "rustc_expand" "-p" "rustc_feature" "-p" "rustc_fluent_macro" "-p" "rustc_fs_util" "-p" "rustc_graphviz" "-p" "rustc_hir" "-p" "rustc_hir_analysis" "-p" "rustc_hir_pretty" "-p" "rustc_hir_typeck" "-p" "rustc_incremental" "-p" "rustc_index" "-p" "rustc_index_macros" "-p" "rustc_infer" "-p" "rustc_interface" "-p" "rustc_lexer" "-p" "rustc_lint" "-p" "rustc_lint_defs" "-p" "rustc_llvm" "-p" "rustc_log" "-p" "rustc_macros" "-p" "rustc_metadata" "-p" "rustc_middle" "-p" "rustc_mir_build" "-p" "rustc_mir_dataflow" "-p" "rustc_mir_transform" "-p" "rustc_monomorphize" "-p" "rustc_next_trait_solver" "-p" "rustc_parse" "-p" "rustc_parse_format" "-p" "rustc_passes" "-p" "rustc_pattern_analysis" "-p" "rustc_privacy" "-p" "rustc_query_impl" "-p" "rustc_query_system" "-p" "rustc_resolve" "-p" "rustc_sanitizers" "-p" "rustc_serialize" "-p" "rustc_session" "-p" "rustc_smir" "-p" "rustc_span" "-p" "rustc_symbol_mangling" "-p" "rustc_target" "-p" "rustc_trait_selection" "-p" "rustc_traits" "-p" "rustc_transmute" "-p" "rustc_ty_utils" "-p" "rustc_type_ir" "-p" "rustc_type_ir_macros" "-p" "stable_mir", failure_behavior: Exit, stdout: Print, stderr: Print, run_always: false } did not execute successfully.

Build completed unsuccessfully in 0:01:10
  local time: Wed Jul 10 06:04:21 UTC 2024
  network time: Wed, 10 Jul 2024 06:04:21 GMT

rust-log-analyzer avatar Jul 10 '24 06:07 rust-log-analyzer