Closed
Description
ICE occurs whether we use intrinsics::discriminant_value
or mem::discriminant
. cc #35118 #24263
STR
#![feature(core_intrinsics)]
#![feature(i128_type)]
#[repr(i128)]
enum Big { A, B }
fn main() {
unsafe {
println!("{} {:?}",
std::intrinsics::discriminant_value(&Big::A),
std::mem::discriminant(&Big::B));
}
}
ICE
thread 'rustc' panicked at 'assertion failed: bits <= 64', src/librustc_trans/adt.rs:368:4
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
stack backtrace:
0: std::sys::imp::backtrace::tracing::imp::unwind_backtrace
1: std::panicking::default_hook::{{closure}}
2: std::panicking::default_hook
3: std::panicking::rust_panic_with_hook
4: std::panicking::begin_panic_new
5: rustc_trans::adt::load_discr
6: rustc_trans::adt::trans_get_discr
7: rustc_trans::intrinsic::trans_intrinsic_call
8: rustc_trans::mir::block::<impl rustc_trans::mir::MirContext<'a, 'tcx>>::trans_terminator
9: rustc_trans::mir::trans_mir
10: rustc_trans::trans_item::TransItem::define
11: rustc_trans::base::trans_crate::module_translation
12: rustc_trans::base::trans_crate
13: rustc_driver::driver::phase_4_translate_to_llvm
14: rustc_driver::driver::compile_input::{{closure}}
15: rustc_driver::driver::phase_3_run_analysis_passes::{{closure}}
16: rustc_driver::driver::phase_3_run_analysis_passes
17: rustc_driver::driver::compile_input
18: rustc_driver::run_compiler