Skip to content

ICE: Unsigned value 0x100 does not fit in 8 bits #123690

@matthiaskrgr

Description

@matthiaskrgr

auto-reduced (treereduce-rust): (from miri: tests/pass/enums.rs )

fn more_discriminant_overflow() { pub enum Infallible {} pub enum E1 { V2 {}, V3, V4, } #[repr(u8)] pub enum E2<X> { V1 { f: bool }, /*_00*/ _01(X), _02(X), _03(X), _04(X), _05(X), _06(X), _07(X), _08(X), _09(X), _0A(X), _0B(X), _0C(X), _0D(X), _0E(X), _0F(X), _10(X), _11(X), _12(X), _13(X), _14(X), _15(X), _16(X), _17(X), _18(X), _19(X), _1A(X), _1B(X), _1C(X), _1D(X), _1E(X), _1F(X), _20(X), _21(X), _22(X), _23(X), _24(X), _25(X), _26(X), _27(X), _28(X), _29(X), _2A(X), _2B(X), _2C(X), _2D(X), _2E(X), _2F(X), _30(X), _31(X), _32(X), _33(X), _34(X), _35(X), _36(X), _37(X), _38(X), _39(X), _3A(X), _3B(X), _3C(X), _3D(X), _3E(X), _3F(X), _40(X), _41(X), _42(X), _43(X), _44(X), _45(X), _46(X), _47(X), _48(X), _49(X), _4A(X), _4B(X), _4C(X), _4D(X), _4E(X), _4F(X), _50(X), _51(X), _52(X), _53(X), _54(X), _55(X), _56(X), _57(X), _58(X), _59(X), _5A(X), _5B(X), _5C(X), _5D(X), _5E(X), _5F(X), _60(X), _61(X), _62(X), _63(X), _64(X), _65(X), _66(X), _67(X), _68(X), _69(X), _6A(X), _6B(X), _6C(X), _6D(X), _6E(X), _6F(X), _70(X), _71(X), _72(X), _73(X), _74(E1), _75(X), _76(X), _77(X), _78(X), _79(X), _7A(X), _7B(X), _7C(X), _7D(X), _7E(X), _7F(X), _80(X), _81(X), _82(X), _83(X), _84(X), _85(X), _86(X), _87(X), _88(X), _89(X), _8A(X), _8B(X), _8C(X), _8D(X), _8E(X), _8F(X), _90(X), _91(X), _92(X), _93(X), _94(X), _95(X), _96(X), _97(X), _98(X), _99(X), _9A(X), _9B(X), _9C(X), _9D(X), _9E(X), _9F(X), _A0(X), _A1(X), _A2(X), _A3(X), _A4(X), _A5(X), _A6(X), _A7(X), _A8(X), _A9(X), _AA(X), _AB(X), _AC(X), _AD(X), _AE(X), _AF(X), _B0(X), _B1(X), _B2(X), _B3(X), _B4(X), _B5(X), _B6(X), _B7(X), _B8(X), _B9(X), _BA(X), _BB(X), _BC(X), _BD(X), _BE(X), _BF(X), _C0(X), _C1(X), _C2(X), _C3(X), _C4(X), _C5(X), _C6(X), _D8(X), _C8(X), _C9(X), _CA(X), _CB(X), _CC(X), _CD(X), _CE(X), _CF(X), _D0(X), _D1(X), _D2(X), _D3(X), _D4(X), _D5(X), _D6(X), _D7(X), _D8(X), _D9(X), _DA(X), _DB(X), _DC(X), _DD(X), _DE(X), _DF(X), _E0(X), _E1(X), _E2(X), _E3(X), _E4(X), _E5(X), _E6(X), _E7(X), _E8(X), _E9(X), _EA(X), _EB(X), _EC(X), _ED(X), _EE(X), _EF(i32, i32), _F0(X), _F1(X), _F2(X), _F3(X), _F4(X), _F5(X), _F6(X), _F7(X), _F8(X), _F9(X), _FA(X), _FB(X), _FC(X), _FD(X), _FE(X), _FF(X), V3, V4, } if let E2::V1 { .. } = E2::V3::<Infallible> {} } 
original code

original:

fn more_discriminant_overflow() { pub enum Infallible {} pub enum E1 { V2 { }, V3, V4, } #[repr(u8)] pub enum E2<X> { V1 { f: bool }, /*_00*/ _01(X), _02(X), _03(X), _04(X), _05(X), _06(X), _07(X), _08(X), _09(X), _0A(X), _0B(X), _0C(X), _0D(X), _0E(X), _0F(X), _10(X), _11(X), _12(X), _13(X), _14(X), _15(X), _16(X), _17(X), _18(X), _19(X), _1A(X), _1B(X), _1C(X), _1D(X), _1E(X), _1F(X), _20(X), _21(X), _22(X), _23(X), _24(X), _25(X), _26(X), _27(X), _28(X), _29(X), _2A(X), _2B(X), _2C(X), _2D(X), _2E(X), _2F(X), _30(X), _31(X), _32(X), _33(X), _34(X), _35(X), _36(X), _37(X), _38(X), _39(X), _3A(X), _3B(X), _3C(X), _3D(X), _3E(X), _3F(X), _40(X), _41(X), _42(X), _43(X), _44(X), _45(X), _46(X), _47(X), _48(X), _49(X), _4A(X), _4B(X), _4C(X), _4D(X), _4E(X), _4F(X), _50(X), _51(X), _52(X), _53(X), _54(X), _55(X), _56(X), _57(X), _58(X), _59(X), _5A(X), _5B(X), _5C(X), _5D(X), _5E(X), _5F(X), _60(X), _61(X), _62(X), _63(X), _64(X), _65(X), _66(X), _67(X), _68(X), _69(X), _6A(X), _6B(X), _6C(X), _6D(X), _6E(X), _6F(X), _70(X), _71(X), _72(X), _73(X), _74(E1), _75(X), _76(X), _77(X), _78(X), _79(X), _7A(X), _7B(X), _7C(X), _7D(X), _7E(X), _7F(X), _80(X), _81(X), _82(X), _83(X), _84(X), _85(X), _86(X), _87(X), _88(X), _89(X), _8A(X), _8B(X), _8C(X), _8D(X), _8E(X), _8F(X), _90(X), _91(X), _92(X), _93(X), _94(X), _95(X), _96(X), _97(X), _98(X), _99(X), _9A(X), _9B(X), _9C(X), _9D(X), _9E(X), _9F(X), _A0(X), _A1(X), _A2(X), _A3(X), _A4(X), _A5(X), _A6(X), _A7(X), _A8(X), _A9(X), _AA(X), _AB(X), _AC(X), _AD(X), _AE(X), _AF(X), _B0(X), _B1(X), _B2(X), _B3(X), _B4(X), _B5(X), _B6(X), _B7(X), _B8(X), _B9(X), _BA(X), _BB(X), _BC(X), _BD(X), _BE(X), _BF(X), _C0(X), _C1(X), _C2(X), _C3(X), _C4(X), _C5(X), _C6(X), _D8(X), _C8(X), _C9(X), _CA(X), _CB(X), _CC(X), _CD(X), _CE(X), _CF(X), _D0(X), _D1(X), _D2(X), _D3(X), _D4(X), _D5(X), _D6(X), _D7(X), _D8(X), _D9(X), _DA(X), _DB(X), _DC(X), _DD(X), _DE(X), _DF(X), _E0(X), _E1(X), _E2(X), _E3(X), _E4(X), _E5(X), _E6(X), _E7(X), _E8(X), _E9(X), _EA(X), _EB(X), _EC(X), _ED(X), _EE(X), _EF(i32, i32), _F0(X), _F1(X), _F2(X), _F3(X), _F4(X), _F5(X), _F6(X), _F7(X), _F8(X), _F9(X), _FA(X), _FB(X), _FC(X), _FD(X), _FE(X), _FF(X), V3, V4, } if let E2::V1 { .. } = E2::V3::<Infallible> { } } 

Version information

rustc 1.79.0-nightly (033becf83 2024-04-09) binary: rustc commit-hash: 033becf83c62814357f4810db149471db46ab816 commit-date: 2024-04-09 host: x86_64-unknown-linux-gnu release: 1.79.0-nightly LLVM version: 18.1.3 

Command:
/home/matthias/.rustup/toolchains/master/bin/rustc

Program output

error[E0428]: the name `_D8` is defined multiple times --> /tmp/icemaker_global_tempdir.7SPizWTj47xD/rustc_testrunner_tmpdir_reporting.iDiOmTF2oX4J/mvce.rs:230:9 | 213 | _D8(X), | ------ previous definition of the type `_D8` here ... 230 | _D8(X), | ^^^^^^ `_D8` redefined here | = note: `_D8` must be defined only once in the type namespace of this enum error[E0601]: `main` function not found in crate `mvce` --> /tmp/icemaker_global_tempdir.7SPizWTj47xD/rustc_testrunner_tmpdir_reporting.iDiOmTF2oX4J/mvce.rs:276:2 | 276 | } | ^ consider adding a `main` function to `/tmp/icemaker_global_tempdir.7SPizWTj47xD/rustc_testrunner_tmpdir_reporting.iDiOmTF2oX4J/mvce.rs` error[E0370]: enum discriminant overflowed --> /tmp/icemaker_global_tempdir.7SPizWTj47xD/rustc_testrunner_tmpdir_reporting.iDiOmTF2oX4J/mvce.rs:271:9 | 271 | V3, | ^^ overflowed on value after 255 | = note: explicitly set `V3 = 0` if that is desired outcome error[E0081]: discriminant value `0` assigned more than once --> /tmp/icemaker_global_tempdir.7SPizWTj47xD/rustc_testrunner_tmpdir_reporting.iDiOmTF2oX4J/mvce.rs:12:5 | 12 | pub enum E2<X> { | ^^^^^^^^^^^^^^ 13 | V1 { f: bool }, | -- | | | `0` assigned here | discriminant for `V3` incremented from this startpoint (`V1` + 256 variants later => `V3` = 0) ... 271 | V3, | -- `0` assigned here error[E0081]: discriminant value `1` assigned more than once --> /tmp/icemaker_global_tempdir.7SPizWTj47xD/rustc_testrunner_tmpdir_reporting.iDiOmTF2oX4J/mvce.rs:12:5 | 12 | pub enum E2<X> { | ^^^^^^^^^^^^^^ 13 | V1 { f: bool }, | -- | | | discriminant for `_01` incremented from this startpoint (`V1` + 1 variant later => `_01` = 1) | discriminant for `V4` incremented from this startpoint (`V1` + 257 variants later => `V4` = 1) 14 | 15 | /*_00*/ _01(X), | --- `1` assigned here ... 272 | V4, | -- `1` assigned here error: internal compiler error: /rustc/033becf83c62814357f4810db149471db46ab816/compiler/rustc_middle/src/mir/interpret/value.rs:134:32: Unsigned value 0x100 does not fit in 8 bits thread 'rustc' panicked at /rustc/033becf83c62814357f4810db149471db46ab816/compiler/rustc_middle/src/mir/interpret/value.rs:134:32: Box<dyn Any> stack backtrace: 0: 0x7b17329d9885 - std::backtrace_rs::backtrace::libunwind::trace::he2880c2699337794 at /rustc/033becf83c62814357f4810db149471db46ab816/library/std/src/../../backtrace/src/backtrace/libunwind.rs:105:5 1: 0x7b17329d9885 - std::backtrace_rs::backtrace::trace_unsynchronized::h460ebc9cd0eb6331 at /rustc/033becf83c62814357f4810db149471db46ab816/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5 2: 0x7b17329d9885 - std::sys_common::backtrace::_print_fmt::h47b746c0604572c3 at /rustc/033becf83c62814357f4810db149471db46ab816/library/std/src/sys_common/backtrace.rs:68:5 3: 0x7b17329d9885 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::ha907b996746f56a0 at /rustc/033becf83c62814357f4810db149471db46ab816/library/std/src/sys_common/backtrace.rs:44:22 4: 0x7b1732a28abb - core::fmt::rt::Argument::fmt::hfe22b646b1687193 at /rustc/033becf83c62814357f4810db149471db46ab816/library/core/src/fmt/rt.rs:142:9 5: 0x7b1732a28abb - core::fmt::write::h6b4a267d08f3d00d at /rustc/033becf83c62814357f4810db149471db46ab816/library/core/src/fmt/mod.rs:1153:17 6: 0x7b17329ce3ff - std::io::Write::write_fmt::h0abdd14d11c1702a at /rustc/033becf83c62814357f4810db149471db46ab816/library/std/src/io/mod.rs:1843:15 7: 0x7b17329d965e - std::sys_common::backtrace::_print::hbeb8c9c7793a4a1e at /rustc/033becf83c62814357f4810db149471db46ab816/library/std/src/sys_common/backtrace.rs:47:5 8: 0x7b17329d965e - std::sys_common::backtrace::print::h6ca4866d684d9b00 at /rustc/033becf83c62814357f4810db149471db46ab816/library/std/src/sys_common/backtrace.rs:34:9 9: 0x7b17329dc159 - std::panicking::default_hook::{{closure}}::h33647e3098e0b657 10: 0x7b17329dbe75 - std::panicking::default_hook::ha6320bcd5d0e9cc8 at /rustc/033becf83c62814357f4810db149471db46ab816/library/std/src/panicking.rs:291:9 11: 0x7b172f26649f - std[5013708940097fa8]::panicking::update_hook::<alloc[d2bd3d5c53f6cb06]::boxed::Box<rustc_driver_impl[83e8eb7d3795c9f9]::install_ice_hook::{closure#0}>>::{closure#0} 12: 0x7b17329dc85c - <alloc::boxed::Box<F,A> as core::ops::function::Fn<Args>>::call::hf428354f3713bf5b at /rustc/033becf83c62814357f4810db149471db46ab816/library/alloc/src/boxed.rs:2032:9 13: 0x7b17329dc85c - std::panicking::rust_panic_with_hook::h0014da0b7030d171 at /rustc/033becf83c62814357f4810db149471db46ab816/library/std/src/panicking.rs:792:13 14: 0x7b172f296504 - std[5013708940097fa8]::panicking::begin_panic::<rustc_errors[6d6b100434177d40]::ExplicitBug>::{closure#0} 15: 0x7b172f292fa6 - std[5013708940097fa8]::sys_common::backtrace::__rust_end_short_backtrace::<std[5013708940097fa8]::panicking::begin_panic<rustc_errors[6d6b100434177d40]::ExplicitBug>::{closure#0}, !> 16: 0x7b172f28e5c6 - std[5013708940097fa8]::panicking::begin_panic::<rustc_errors[6d6b100434177d40]::ExplicitBug> 17: 0x7b172f2a0241 - <rustc_errors[6d6b100434177d40]::diagnostic::BugAbort as rustc_errors[6d6b100434177d40]::diagnostic::EmissionGuarantee>::emit_producing_guarantee 18: 0x7b172f74212c - rustc_middle[867c8a7f7f3067fc]::util::bug::opt_span_bug_fmt::<rustc_span[ef049dfdad08a076]::span_encoding::Span>::{closure#0} 19: 0x7b172f72956a - rustc_middle[867c8a7f7f3067fc]::ty::context::tls::with_opt::<rustc_middle[867c8a7f7f3067fc]::util::bug::opt_span_bug_fmt<rustc_span[ef049dfdad08a076]::span_encoding::Span>::{closure#0}, !>::{closure#0} 20: 0x7b172f72940b - rustc_middle[867c8a7f7f3067fc]::ty::context::tls::with_context_opt::<rustc_middle[867c8a7f7f3067fc]::ty::context::tls::with_opt<rustc_middle[867c8a7f7f3067fc]::util::bug::opt_span_bug_fmt<rustc_span[ef049dfdad08a076]::span_encoding::Span>::{closure#0}, !>::{closure#0}, !> 21: 0x7b172d353250 - rustc_middle[867c8a7f7f3067fc]::util::bug::bug_fmt 22: 0x7b1731ca62e5 - <rustc_const_eval[7cbea1700b739c82]::interpret::eval_context::InterpCx<rustc_const_eval[7cbea1700b739c82]::const_eval::dummy_machine::DummyMachine>>::discriminant_for_variant.cold 23: 0x7b17313bf09b - <rustc_mir_transform[3ac67f783d646433]::known_panics_lint::ConstPropagator>::use_ecx::<<rustc_mir_transform[3ac67f783d646433]::known_panics_lint::ConstPropagator>::eval_rvalue::{closure#0}::{closure#11}, rustc_const_eval[7cbea1700b739c82]::interpret::operand::ImmTy> 24: 0x7b172da8e733 - <rustc_mir_transform[3ac67f783d646433]::known_panics_lint::ConstPropagator as rustc_middle[867c8a7f7f3067fc]::mir::visit::Visitor>::visit_assign 25: 0x7b1730ffb2bb - <rustc_mir_transform[3ac67f783d646433]::known_panics_lint::ConstPropagator as rustc_middle[867c8a7f7f3067fc]::mir::visit::Visitor>::visit_body 26: 0x7b172de9aad3 - <rustc_mir_transform[3ac67f783d646433]::known_panics_lint::KnownPanicsLint as rustc_mir_transform[3ac67f783d646433]::pass_manager::MirLint>::run_lint 27: 0x7b173060188d - rustc_mir_transform[3ac67f783d646433]::pass_manager::run_passes_inner 28: 0x7b1730c2ed02 - rustc_mir_transform[3ac67f783d646433]::mir_drops_elaborated_and_const_checked 29: 0x7b1730c2e63d - rustc_query_impl[a13915abec574cc4]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[a13915abec574cc4]::query_impl::mir_drops_elaborated_and_const_checked::dynamic_query::{closure#2}::{closure#0}, rustc_middle[867c8a7f7f3067fc]::query::erase::Erased<[u8; 8usize]>> 30: 0x7b17307d0871 - rustc_query_system[37cb0ad7182a86b8]::query::plumbing::try_execute_query::<rustc_query_impl[a13915abec574cc4]::DynamicConfig<rustc_query_system[37cb0ad7182a86b8]::query::caches::VecCache<rustc_span[ef049dfdad08a076]::def_id::LocalDefId, rustc_middle[867c8a7f7f3067fc]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[a13915abec574cc4]::plumbing::QueryCtxt, false> 31: 0x7b17307d0162 - rustc_query_impl[a13915abec574cc4]::query_impl::mir_drops_elaborated_and_const_checked::get_query_non_incr::__rust_end_short_backtrace 32: 0x7b1730eef693 - rustc_interface[791da96d69a7cf4c]::passes::analysis 33: 0x7b1730eee495 - rustc_query_impl[a13915abec574cc4]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[a13915abec574cc4]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle[867c8a7f7f3067fc]::query::erase::Erased<[u8; 1usize]>> 34: 0x7b17313fa6a5 - rustc_query_system[37cb0ad7182a86b8]::query::plumbing::try_execute_query::<rustc_query_impl[a13915abec574cc4]::DynamicConfig<rustc_query_system[37cb0ad7182a86b8]::query::caches::SingleCache<rustc_middle[867c8a7f7f3067fc]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[a13915abec574cc4]::plumbing::QueryCtxt, false> 35: 0x7b17313fa409 - rustc_query_impl[a13915abec574cc4]::query_impl::analysis::get_query_non_incr::__rust_end_short_backtrace 36: 0x7b1731280cd4 - rustc_interface[791da96d69a7cf4c]::interface::run_compiler::<core[b815557cbe89e06]::result::Result<(), rustc_span[ef049dfdad08a076]::ErrorGuaranteed>, rustc_driver_impl[83e8eb7d3795c9f9]::run_compiler::{closure#0}>::{closure#0} 37: 0x7b173134deff - std[5013708940097fa8]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[791da96d69a7cf4c]::util::run_in_thread_with_globals<rustc_interface[791da96d69a7cf4c]::util::run_in_thread_pool_with_globals<rustc_interface[791da96d69a7cf4c]::interface::run_compiler<core[b815557cbe89e06]::result::Result<(), rustc_span[ef049dfdad08a076]::ErrorGuaranteed>, rustc_driver_impl[83e8eb7d3795c9f9]::run_compiler::{closure#0}>::{closure#0}, core[b815557cbe89e06]::result::Result<(), rustc_span[ef049dfdad08a076]::ErrorGuaranteed>>::{closure#0}, core[b815557cbe89e06]::result::Result<(), rustc_span[ef049dfdad08a076]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[b815557cbe89e06]::result::Result<(), rustc_span[ef049dfdad08a076]::ErrorGuaranteed>> 38: 0x7b173134dcee - <<std[5013708940097fa8]::thread::Builder>::spawn_unchecked_<rustc_interface[791da96d69a7cf4c]::util::run_in_thread_with_globals<rustc_interface[791da96d69a7cf4c]::util::run_in_thread_pool_with_globals<rustc_interface[791da96d69a7cf4c]::interface::run_compiler<core[b815557cbe89e06]::result::Result<(), rustc_span[ef049dfdad08a076]::ErrorGuaranteed>, rustc_driver_impl[83e8eb7d3795c9f9]::run_compiler::{closure#0}>::{closure#0}, core[b815557cbe89e06]::result::Result<(), rustc_span[ef049dfdad08a076]::ErrorGuaranteed>>::{closure#0}, core[b815557cbe89e06]::result::Result<(), rustc_span[ef049dfdad08a076]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[b815557cbe89e06]::result::Result<(), rustc_span[ef049dfdad08a076]::ErrorGuaranteed>>::{closure#1} as core[b815557cbe89e06]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0} 39: 0x7b17329e628b - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h53814b1241345312 at /rustc/033becf83c62814357f4810db149471db46ab816/library/alloc/src/boxed.rs:2018:9 40: 0x7b17329e628b - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h68f33d2823fce7a0 at /rustc/033becf83c62814357f4810db149471db46ab816/library/alloc/src/boxed.rs:2018:9 41: 0x7b17329e628b - std::sys::pal::unix::thread::Thread::new::thread_start::h5c5183b404e56855 at /rustc/033becf83c62814357f4810db149471db46ab816/library/std/src/sys/pal/unix/thread.rs:108:17 42: 0x7b173278455a - <unknown> 43: 0x7b1732801a3c - <unknown> 44: 0x0 - <unknown> 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.79.0-nightly (033becf83 2024-04-09) running on x86_64-unknown-linux-gnu query stack during panic: #0 [mir_drops_elaborated_and_const_checked] elaborating drops for `more_discriminant_overflow` #1 [analysis] running analysis passes on this crate end of query stack error: aborting due to 6 previous errors Some errors have detailed explanations: E0081, E0370, E0428, E0601. For more information about an error, try `rustc --explain E0081`. 

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-MIRArea: Mid-level IR (MIR) - https://blog.rust-lang.org/2016/04/19/MIR.htmlA-layoutArea: Memory layout of typesC-bugCategory: This is a bug.E-needs-mcveCall for participation: This issue has a repro, but needs a Minimal Complete and Verifiable ExampleI-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️S-bug-has-testStatus: This bug is tracked inside the repo by a `known-bug` test.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    Status

    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions