Closed
Description
File: /tmp/icemaker/72181.rs
auto-reduced (treereduce-rust):
enum Void {}
fn f(v: Void) -> ! {
match v {}
}
fn main() {
let v: Void = unsafe { std::mem::transmute::<(), Void>(()) };
f(v);
}
original:
#![feature(never_type)]
#![allow(unused, invalid_value)]
enum Void {}
fn f(v: Void) -> ! {
match v {} //~ ERROR entering unreachable code
}
fn main() {
let v: Void = unsafe {
std::mem::transmute::<(), Void>(())
};
f(v); //~ inside `main`
}
Version information
rustc 1.75.0-nightly (0d1664674 2023-10-21)
binary: rustc
commit-hash: 0d1664674a620f2c139be756a5cf7b1b057bc3a9
commit-date: 2023-10-21
host: x86_64-unknown-linux-gnu
release: 1.75.0-nightly
LLVM version: 17.0.3
Command:
/home/matthias/.rustup/toolchains/master/bin/rustc -Zcrate-attr=feature(non_exhaustive_omitted_patterns_lint) -Wnon-exhaustive-omitted-patterns
Program output
thread 'rustc' panicked at compiler/rustc_mir_build/src/thir/pattern/usefulness.rs:887:14:
index out of bounds: the len is 0 but the index is 0
stack backtrace:
0: 0x7fc926b6917c - std::backtrace_rs::backtrace::libunwind::trace::h01509ae085fb8b11
at /rustc/0d1664674a620f2c139be756a5cf7b1b057bc3a9/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
1: 0x7fc926b6917c - std::backtrace_rs::backtrace::trace_unsynchronized::h94ef5e8e8d5ea87b
at /rustc/0d1664674a620f2c139be756a5cf7b1b057bc3a9/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
2: 0x7fc926b6917c - std::sys_common::backtrace::_print_fmt::h0b35ef2c05dde194
at /rustc/0d1664674a620f2c139be756a5cf7b1b057bc3a9/library/std/src/sys_common/backtrace.rs:67:5
3: 0x7fc926b6917c - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h633341ea30a5f327
at /rustc/0d1664674a620f2c139be756a5cf7b1b057bc3a9/library/std/src/sys_common/backtrace.rs:44:22
4: 0x7fc926bcb400 - core::fmt::rt::Argument::fmt::hd3a92f1ce7a7db06
at /rustc/0d1664674a620f2c139be756a5cf7b1b057bc3a9/library/core/src/fmt/rt.rs:142:9
5: 0x7fc926bcb400 - core::fmt::write::hf91d2aa8e4d084f5
at /rustc/0d1664674a620f2c139be756a5cf7b1b057bc3a9/library/core/src/fmt/mod.rs:1117:17
6: 0x7fc926b5d09f - std::io::Write::write_fmt::he8307bc52a524c8e
at /rustc/0d1664674a620f2c139be756a5cf7b1b057bc3a9/library/std/src/io/mod.rs:1762:15
7: 0x7fc926b68f64 - std::sys_common::backtrace::_print::h6c27a0d5bab96c5d
at /rustc/0d1664674a620f2c139be756a5cf7b1b057bc3a9/library/std/src/sys_common/backtrace.rs:47:5
8: 0x7fc926b68f64 - std::sys_common::backtrace::print::h8b89ce035b71d50c
at /rustc/0d1664674a620f2c139be756a5cf7b1b057bc3a9/library/std/src/sys_common/backtrace.rs:34:9
9: 0x7fc926b6bbf7 - std::panicking::default_hook::{{closure}}::h411a7c125ecb9d05
10: 0x7fc926b6b95f - std::panicking::default_hook::h5d5fee123330a759
at /rustc/0d1664674a620f2c139be756a5cf7b1b057bc3a9/library/std/src/panicking.rs:292:9
11: 0x7fc929681120 - std[f4efd563eee42cb1]::panicking::update_hook::<alloc[156d4197a6564500]::boxed::Box<rustc_driver_impl[9201c065c27ce5d7]::install_ice_hook::{closure#0}>>::{closure#0}
12: 0x7fc926b6c338 - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::hcb9e1bcc3d9dd556
at /rustc/0d1664674a620f2c139be756a5cf7b1b057bc3a9/library/alloc/src/boxed.rs:2021:9
13: 0x7fc926b6c338 - std::panicking::rust_panic_with_hook::hb348c6f446da2573
at /rustc/0d1664674a620f2c139be756a5cf7b1b057bc3a9/library/std/src/panicking.rs:735:13
14: 0x7fc926b6c08e - std::panicking::begin_panic_handler::{{closure}}::he247db6939c402b2
at /rustc/0d1664674a620f2c139be756a5cf7b1b057bc3a9/library/std/src/panicking.rs:609:13
15: 0x7fc926b69646 - std::sys_common::backtrace::__rust_end_short_backtrace::h34bc29d5fc936ca6
at /rustc/0d1664674a620f2c139be756a5cf7b1b057bc3a9/library/std/src/sys_common/backtrace.rs:170:18
16: 0x7fc926b6bdf2 - rust_begin_unwind
at /rustc/0d1664674a620f2c139be756a5cf7b1b057bc3a9/library/std/src/panicking.rs:597:5
17: 0x7fc926bc7b25 - core::panicking::panic_fmt::h857b4f3a6374266e
at /rustc/0d1664674a620f2c139be756a5cf7b1b057bc3a9/library/core/src/panicking.rs:72:14
18: 0x7fc926bc7d42 - core::panicking::panic_bounds_check::h86dc87e9f444db14
at /rustc/0d1664674a620f2c139be756a5cf7b1b057bc3a9/library/core/src/panicking.rs:190:5
19: 0x7fc929b2a6a3 - rustc_mir_build[876fa77fc50d6d52]::thir::pattern::usefulness::collect_nonexhaustive_missing_variants
20: 0x7fc92a933025 - rustc_mir_build[876fa77fc50d6d52]::thir::pattern::usefulness::compute_match_usefulness
21: 0x7fc9279e2861 - <rustc_mir_build[876fa77fc50d6d52]::thir::pattern::check_match::MatchVisitor as rustc_middle[6630f2cd22fa884b]::thir::visit::Visitor>::visit_expr
22: 0x7fc9279e1f49 - <rustc_mir_build[876fa77fc50d6d52]::thir::pattern::check_match::MatchVisitor as rustc_middle[6630f2cd22fa884b]::thir::visit::Visitor>::visit_expr
23: 0x7fc9279e2b63 - <rustc_mir_build[876fa77fc50d6d52]::thir::pattern::check_match::MatchVisitor as rustc_middle[6630f2cd22fa884b]::thir::visit::Visitor>::visit_expr
24: 0x7fc9279e1f49 - <rustc_mir_build[876fa77fc50d6d52]::thir::pattern::check_match::MatchVisitor as rustc_middle[6630f2cd22fa884b]::thir::visit::Visitor>::visit_expr
25: 0x7fc92aac9d4a - rustc_mir_build[876fa77fc50d6d52]::thir::pattern::check_match::check_match
26: 0x7fc92aac9ad7 - rustc_query_impl[bb0c43c41d880ee9]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[bb0c43c41d880ee9]::query_impl::check_match::dynamic_query::{closure#2}::{closure#0}, rustc_middle[6630f2cd22fa884b]::query::erase::Erased<[u8; 1usize]>>
27: 0x7fc92aac94eb - rustc_query_system[b579e6e1f865e2fd]::query::plumbing::try_execute_query::<rustc_query_impl[bb0c43c41d880ee9]::DynamicConfig<rustc_query_system[b579e6e1f865e2fd]::query::caches::VecCache<rustc_span[2e3f5238368c790a]::def_id::LocalDefId, rustc_middle[6630f2cd22fa884b]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[bb0c43c41d880ee9]::plumbing::QueryCtxt, false>
28: 0x7fc92aac929d - rustc_query_impl[bb0c43c41d880ee9]::query_impl::check_match::get_query_non_incr::__rust_end_short_backtrace
29: 0x7fc92ac1ece1 - rustc_mir_build[876fa77fc50d6d52]::build::mir_built
30: 0x7fc92ac1eafb - rustc_query_impl[bb0c43c41d880ee9]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[bb0c43c41d880ee9]::query_impl::mir_built::dynamic_query::{closure#2}::{closure#0}, rustc_middle[6630f2cd22fa884b]::query::erase::Erased<[u8; 8usize]>>
31: 0x7fc92a86beac - rustc_query_system[b579e6e1f865e2fd]::query::plumbing::try_execute_query::<rustc_query_impl[bb0c43c41d880ee9]::DynamicConfig<rustc_query_system[b579e6e1f865e2fd]::query::caches::VecCache<rustc_span[2e3f5238368c790a]::def_id::LocalDefId, rustc_middle[6630f2cd22fa884b]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[bb0c43c41d880ee9]::plumbing::QueryCtxt, false>
32: 0x7fc92a86b890 - rustc_query_impl[bb0c43c41d880ee9]::query_impl::mir_built::get_query_non_incr::__rust_end_short_backtrace
33: 0x7fc928a1972e - rustc_mir_transform[215800bab071105b]::check_unsafety::unsafety_check_result
34: 0x7fc92a86bc87 - rustc_query_impl[bb0c43c41d880ee9]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[bb0c43c41d880ee9]::query_impl::unsafety_check_result::dynamic_query::{closure#2}::{closure#0}, rustc_middle[6630f2cd22fa884b]::query::erase::Erased<[u8; 8usize]>>
35: 0x7fc92a86beac - rustc_query_system[b579e6e1f865e2fd]::query::plumbing::try_execute_query::<rustc_query_impl[bb0c43c41d880ee9]::DynamicConfig<rustc_query_system[b579e6e1f865e2fd]::query::caches::VecCache<rustc_span[2e3f5238368c790a]::def_id::LocalDefId, rustc_middle[6630f2cd22fa884b]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[bb0c43c41d880ee9]::plumbing::QueryCtxt, false>
36: 0x7fc92a86b950 - rustc_query_impl[bb0c43c41d880ee9]::query_impl::unsafety_check_result::get_query_non_incr::__rust_end_short_backtrace
37: 0x7fc92a86c99a - rustc_mir_transform[215800bab071105b]::mir_const
38: 0x7fc92a86c8e7 - rustc_query_impl[bb0c43c41d880ee9]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[bb0c43c41d880ee9]::query_impl::mir_const::dynamic_query::{closure#2}::{closure#0}, rustc_middle[6630f2cd22fa884b]::query::erase::Erased<[u8; 8usize]>>
39: 0x7fc92a86beac - rustc_query_system[b579e6e1f865e2fd]::query::plumbing::try_execute_query::<rustc_query_impl[bb0c43c41d880ee9]::DynamicConfig<rustc_query_system[b579e6e1f865e2fd]::query::caches::VecCache<rustc_span[2e3f5238368c790a]::def_id::LocalDefId, rustc_middle[6630f2cd22fa884b]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[bb0c43c41d880ee9]::plumbing::QueryCtxt, false>
40: 0x7fc92a86ba10 - rustc_query_impl[bb0c43c41d880ee9]::query_impl::mir_const::get_query_non_incr::__rust_end_short_backtrace
41: 0x7fc928cab933 - rustc_mir_transform[215800bab071105b]::mir_promoted
42: 0x7fc92aaca452 - rustc_query_impl[bb0c43c41d880ee9]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[bb0c43c41d880ee9]::query_impl::mir_promoted::dynamic_query::{closure#2}::{closure#0}, rustc_middle[6630f2cd22fa884b]::query::erase::Erased<[u8; 16usize]>>
43: 0x7fc92aaca6c0 - rustc_query_system[b579e6e1f865e2fd]::query::plumbing::try_execute_query::<rustc_query_impl[bb0c43c41d880ee9]::DynamicConfig<rustc_query_system[b579e6e1f865e2fd]::query::caches::VecCache<rustc_span[2e3f5238368c790a]::def_id::LocalDefId, rustc_middle[6630f2cd22fa884b]::query::erase::Erased<[u8; 16usize]>>, false, false, false>, rustc_query_impl[bb0c43c41d880ee9]::plumbing::QueryCtxt, false>
44: 0x7fc92aaca353 - rustc_query_impl[bb0c43c41d880ee9]::query_impl::mir_promoted::get_query_non_incr::__rust_end_short_backtrace
45: 0x7fc92b37d143 - rustc_borrowck[98db7719697c2280]::mir_borrowck
46: 0x7fc92b37d0af - rustc_query_impl[bb0c43c41d880ee9]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[bb0c43c41d880ee9]::query_impl::mir_borrowck::dynamic_query::{closure#2}::{closure#0}, rustc_middle[6630f2cd22fa884b]::query::erase::Erased<[u8; 8usize]>>
47: 0x7fc92a86beac - rustc_query_system[b579e6e1f865e2fd]::query::plumbing::try_execute_query::<rustc_query_impl[bb0c43c41d880ee9]::DynamicConfig<rustc_query_system[b579e6e1f865e2fd]::query::caches::VecCache<rustc_span[2e3f5238368c790a]::def_id::LocalDefId, rustc_middle[6630f2cd22fa884b]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[bb0c43c41d880ee9]::plumbing::QueryCtxt, false>
48: 0x7fc92a86bad0 - rustc_query_impl[bb0c43c41d880ee9]::query_impl::mir_borrowck::get_query_non_incr::__rust_end_short_backtrace
49: 0x7fc92ac2d6ec - rustc_interface[950f30a8e42de681]::passes::analysis
50: 0x7fc92ac2d021 - rustc_query_impl[bb0c43c41d880ee9]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[bb0c43c41d880ee9]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle[6630f2cd22fa884b]::query::erase::Erased<[u8; 1usize]>>
51: 0x7fc92b0d58e6 - rustc_query_system[b579e6e1f865e2fd]::query::plumbing::try_execute_query::<rustc_query_impl[bb0c43c41d880ee9]::DynamicConfig<rustc_query_system[b579e6e1f865e2fd]::query::caches::SingleCache<rustc_middle[6630f2cd22fa884b]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[bb0c43c41d880ee9]::plumbing::QueryCtxt, false>
52: 0x7fc92b0d5715 - rustc_query_impl[bb0c43c41d880ee9]::query_impl::analysis::get_query_non_incr::__rust_end_short_backtrace
53: 0x7fc92b3397ea - std[f4efd563eee42cb1]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[950f30a8e42de681]::util::run_in_thread_with_globals<rustc_interface[950f30a8e42de681]::interface::run_compiler<core[398df516b6292ea0]::result::Result<(), rustc_span[2e3f5238368c790a]::ErrorGuaranteed>, rustc_driver_impl[9201c065c27ce5d7]::run_compiler::{closure#1}>::{closure#0}, core[398df516b6292ea0]::result::Result<(), rustc_span[2e3f5238368c790a]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[398df516b6292ea0]::result::Result<(), rustc_span[2e3f5238368c790a]::ErrorGuaranteed>>
54: 0x7fc92b338af3 - <<std[f4efd563eee42cb1]::thread::Builder>::spawn_unchecked_<rustc_interface[950f30a8e42de681]::util::run_in_thread_with_globals<rustc_interface[950f30a8e42de681]::interface::run_compiler<core[398df516b6292ea0]::result::Result<(), rustc_span[2e3f5238368c790a]::ErrorGuaranteed>, rustc_driver_impl[9201c065c27ce5d7]::run_compiler::{closure#1}>::{closure#0}, core[398df516b6292ea0]::result::Result<(), rustc_span[2e3f5238368c790a]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[398df516b6292ea0]::result::Result<(), rustc_span[2e3f5238368c790a]::ErrorGuaranteed>>::{closure#1} as core[398df516b6292ea0]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
55: 0x7fc926b77105 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h0eb94936306cabe0
at /rustc/0d1664674a620f2c139be756a5cf7b1b057bc3a9/library/alloc/src/boxed.rs:2007:9
56: 0x7fc926b77105 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h872f69967c8bfd56
at /rustc/0d1664674a620f2c139be756a5cf7b1b057bc3a9/library/alloc/src/boxed.rs:2007:9
57: 0x7fc926b77105 - std::sys::unix::thread::Thread::new::thread_start::h137c6fabce8fb63e
at /rustc/0d1664674a620f2c139be756a5cf7b1b057bc3a9/library/std/src/sys/unix/thread.rs:108:17
58: 0x7fc9269409eb - <unknown>
59: 0x7fc9269c47cc - <unknown>
60: 0x0 - <unknown>
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: rustc 1.75.0-nightly (0d1664674 2023-10-21) running on x86_64-unknown-linux-gnu
note: compiler flags: -Z crate-attr=feature(non_exhaustive_omitted_patterns_lint) -Z dump-mir-dir=dir
query stack during panic:
#0 [check_match] match-checking `f`
#1 [mir_built] building MIR for `f`
#2 [unsafety_check_result] unsafety-checking `f`
#3 [mir_const] preparing `f` for borrow checking
#4 [mir_promoted] promoting constants in MIR for `f`
#5 [mir_borrowck] borrow-checking `f`
#6 [analysis] running analysis passes on this crate
end of query stack
warning: unreachable expression
--> /tmp/icemaker_global_tempdir.0Q5m6L1HMRcv/rustc_testrunner_tmpdir_reporting.M2meZgrJ4Cr3/mvce.rs:9:7
|
8 | let v: Void = unsafe { std::mem::transmute::<(), Void>(()) };
| ----------------------------------- any code following this expression is unreachable
9 | f(v);
| ^ unreachable expression
|
note: this expression has type `Void`, which is uninhabited
--> /tmp/icemaker_global_tempdir.0Q5m6L1HMRcv/rustc_testrunner_tmpdir_reporting.M2meZgrJ4Cr3/mvce.rs:8:28
|
8 | let v: Void = unsafe { std::mem::transmute::<(), Void>(()) };
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
= note: `#[warn(unreachable_code)]` on by default
warning: unused variable: `v`
--> /tmp/icemaker_global_tempdir.0Q5m6L1HMRcv/rustc_testrunner_tmpdir_reporting.M2meZgrJ4Cr3/mvce.rs:8:9
|
8 | let v: Void = unsafe { std::mem::transmute::<(), Void>(()) };
| ^ help: if this is intentional, prefix it with an underscore: `_v`
|
= note: `#[warn(unused_variables)]` on by default
warning: 2 warnings emitted