-
Notifications
You must be signed in to change notification settings - Fork 13.6k
Closed
Labels
C-bugCategory: This is a bug.Category: This is a bug.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️P-mediumMedium priorityMedium priorityT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.regression-from-stable-to-stablePerformance or correctness regression from one stable version to another.Performance or correctness regression from one stable version to another.
Milestone
Description
Changing the commented out snippet to the uncommented one caused a ICE when building on nightly 1.62.0
.
EDIT:
Moving the integer cast to before the shift fixes the ICE. (halves[0] as $int << HALF_SIZE
)
Code
pub trait BitSplit {
type Half;
fn merge(halves: [Self::Half; 2]) -> Self;
}
macro_rules! impl_ints {
($int:ty => $half:ty; $mask:expr) => {
impl BitSplit for $int {
type Half = $half;
#[inline]
fn merge(halves: [Self::Half; 2]) -> Self {
// stable: no error
// nightly: no error
(halves[0] << (std::mem::size_of::<$half>() * 8)) as $int | halves[1] as $int
// stable: "shift will overflow" error
// nightly: ICE as below
// const HALF_SIZE: usize = std::mem::size_of::<$half>() * 8;
// (halves[0] << HALF_SIZE) as $int | halves[1] as $int
}
}
};
}
impl_ints!(u128 => u64; 0x0000_0000_0000_0000_FFFF_FFFF_FFFF_FFFF);
impl_ints!( u64 => u32; 0x0000_0000_FFFF_FFFF);
impl_ints!( u32 => u16; 0x0000_FFFF);
impl_ints!( u16 => u8; 0x00FF);
Meta
rustc --version --verbose
:
rustc 1.62.0-nightly (ecd44958e 2022-05-10)
binary: rustc
commit-hash: ecd44958e0a21110d09862ee080d95a4ca6c52f8
commit-date: 2022-05-10
host: x86_64-unknown-linux-gnu
release: 1.62.0-nightly
LLVM version: 14.0.1
rustc +stable --version --verbose
:
rustc 1.60.0 (7737e0b5c 2022-04-04)
binary: rustc
commit-hash: 7737e0b5c4103216d6fd8cf941b7ab9bdbaace7c
commit-date: 2022-04-04
host: x86_64-unknown-linux-gnu
release: 1.60.0
LLVM version: 14.0.0
Error output
:: cargo b
Compiling playground v0.1.0 (/home/erxkk/Source/erxkk/playground)
thread 'rustc' panicked at 'to_const_int doesn't work on scalar pairs: InterpErrorInfo(InterpErrorInfoInner { kind: using uninitialized data, but this operation requires initialized memory, backtrace: None })', /rustc/4ca19e09d302a4cbde14f9cb1bc109179dc824cd/compiler/rustc_const_eval/src/interpret/operand.rs:243:36
stack backtrace:
0: 0x7fdba029d85d - std::backtrace_rs::backtrace::libunwind::trace::hd79e9b51bb0b02a3
at /rustc/4ca19e09d302a4cbde14f9cb1bc109179dc824cd/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
1: 0x7fdba029d85d - std::backtrace_rs::backtrace::trace_unsynchronized::hc4b2624d11f57391
at /rustc/4ca19e09d302a4cbde14f9cb1bc109179dc824cd/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
2: 0x7fdba029d85d - std::sys_common::backtrace::_print_fmt::h5b920b6df28041d5
at /rustc/4ca19e09d302a4cbde14f9cb1bc109179dc824cd/library/std/src/sys_common/backtrace.rs:66:5
3: 0x7fdba029d85d - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h01f2db48eea34166
at /rustc/4ca19e09d302a4cbde14f9cb1bc109179dc824cd/library/std/src/sys_common/backtrace.rs:45:22
4: 0x7fdba02f8efc - core::fmt::write::h743b8fce003c331c
at /rustc/4ca19e09d302a4cbde14f9cb1bc109179dc824cd/library/core/src/fmt/mod.rs:1194:17
5: 0x7fdba028f041 - std::io::Write::write_fmt::h55edc38b905db9b5
at /rustc/4ca19e09d302a4cbde14f9cb1bc109179dc824cd/library/std/src/io/mod.rs:1655:15
6: 0x7fdba02a0575 - std::sys_common::backtrace::_print::h72c54a6b7a86b7bf
at /rustc/4ca19e09d302a4cbde14f9cb1bc109179dc824cd/library/std/src/sys_common/backtrace.rs:48:5
7: 0x7fdba02a0575 - std::sys_common::backtrace::print::h8b541992f5fa33c9
at /rustc/4ca19e09d302a4cbde14f9cb1bc109179dc824cd/library/std/src/sys_common/backtrace.rs:35:9
8: 0x7fdba02a0575 - std::panicking::default_hook::{{closure}}::h47e8a61e5844dea4
at /rustc/4ca19e09d302a4cbde14f9cb1bc109179dc824cd/library/std/src/panicking.rs:295:22
9: 0x7fdba02a01e9 - std::panicking::default_hook::h65ae1796882c178c
at /rustc/4ca19e09d302a4cbde14f9cb1bc109179dc824cd/library/std/src/panicking.rs:314:9
10: 0x7fdba0acc5a1 - rustc_driver[caca827775d68846]::DEFAULT_HOOK::{closure#0}::{closure#0}
11: 0x7fdba02a0d46 - std::panicking::rust_panic_with_hook::h1c3eee211b989bad
at /rustc/4ca19e09d302a4cbde14f9cb1bc109179dc824cd/library/std/src/panicking.rs:702:17
12: 0x7fdba02a0b47 - std::panicking::begin_panic_handler::{{closure}}::h653627205f5b2cdc
at /rustc/4ca19e09d302a4cbde14f9cb1bc109179dc824cd/library/std/src/panicking.rs:588:13
13: 0x7fdba029dd14 - std::sys_common::backtrace::__rust_end_short_backtrace::h36d845a914b6aae7
at /rustc/4ca19e09d302a4cbde14f9cb1bc109179dc824cd/library/std/src/sys_common/backtrace.rs:138:18
14: 0x7fdba02a0879 - rust_begin_unwind
at /rustc/4ca19e09d302a4cbde14f9cb1bc109179dc824cd/library/std/src/panicking.rs:584:5
15: 0x7fdba0265bd3 - core::panicking::panic_fmt::hb6389d787a80a806
at /rustc/4ca19e09d302a4cbde14f9cb1bc109179dc824cd/library/core/src/panicking.rs:142:14
16: 0x7fdba0265cc3 - core::result::unwrap_failed::h87e24b90746a4cce
at /rustc/4ca19e09d302a4cbde14f9cb1bc109179dc824cd/library/core/src/result.rs:1785:5
17: 0x7fdba2ce2f11 - <rustc_const_eval[ec16a9026af29337]::interpret::operand::ImmTy>::to_const_int
18: 0x7fdba2ce4e0d - <rustc_mir_transform[8a7d782b281e026]::const_prop_lint::ConstPropagator>::check_binary_op
19: 0x7fdba1ee3ad7 - <rustc_mir_transform[8a7d782b281e026]::const_prop_lint::ConstPropagator as rustc_middle[7c51428e7903af24]::mir::visit::Visitor>::visit_body
20: 0x7fdba1ee2b20 - <rustc_mir_transform[8a7d782b281e026]::const_prop_lint::ConstProp as rustc_mir_transform[8a7d782b281e026]::pass_manager::MirLint>::run_lint
21: 0x7fdba1f070be - rustc_mir_transform[8a7d782b281e026]::pass_manager::run_passes
22: 0x7fdba1ef0907 - rustc_mir_transform[8a7d782b281e026]::mir_drops_elaborated_and_const_checked
23: 0x7fdba307921c - <rustc_query_system[a2f7ce718affbf81]::dep_graph::graph::DepGraph<rustc_middle[7c51428e7903af24]::dep_graph::dep_node::DepKind>>::with_task::<rustc_middle[7c51428e7903af24]::ty::context::TyCtxt, rustc_middle[7c51428e7903af24]::ty::WithOptConstParam<rustc_span[ff646084812721ee]::def_id::LocalDefId>, &rustc_data_structures[c194a60a15a7bbb1]::steal::Steal<rustc_middle[7c51428e7903af24]::mir::Body>>
24: 0x7fdba24c3c71 - rustc_query_system[a2f7ce718affbf81]::query::plumbing::try_execute_query::<rustc_query_impl[7a7207227e977dca]::plumbing::QueryCtxt, rustc_query_system[a2f7ce718affbf81]::query::caches::DefaultCache<rustc_middle[7c51428e7903af24]::ty::WithOptConstParam<rustc_span[ff646084812721ee]::def_id::LocalDefId>, &rustc_data_structures[c194a60a15a7bbb1]::steal::Steal<rustc_middle[7c51428e7903af24]::mir::Body>>>
25: 0x7fdba25d88d8 - <rustc_query_impl[7a7207227e977dca]::Queries as rustc_middle[7c51428e7903af24]::ty::query::QueryEngine>::mir_drops_elaborated_and_const_checked
26: 0x7fdba1ef17ec - rustc_mir_transform[8a7d782b281e026]::optimized_mir
27: 0x7fdba30909c7 - <rustc_query_system[a2f7ce718affbf81]::dep_graph::graph::DepGraph<rustc_middle[7c51428e7903af24]::dep_graph::dep_node::DepKind>>::with_task::<rustc_middle[7c51428e7903af24]::ty::context::TyCtxt, rustc_span[ff646084812721ee]::def_id::DefId, &rustc_middle[7c51428e7903af24]::mir::Body>
28: 0x7fdba24e6f02 - rustc_query_system[a2f7ce718affbf81]::query::plumbing::try_execute_query::<rustc_query_impl[7a7207227e977dca]::plumbing::QueryCtxt, rustc_query_system[a2f7ce718affbf81]::query::caches::DefaultCache<rustc_span[ff646084812721ee]::def_id::DefId, &rustc_middle[7c51428e7903af24]::mir::Body>>
29: 0x7fdba25d8b7e - <rustc_query_impl[7a7207227e977dca]::Queries as rustc_middle[7c51428e7903af24]::ty::query::QueryEngine>::optimized_mir
30: 0x7fdba260770f - <rustc_metadata[a14ae4d71db231a9]::rmeta::encoder::EncodeContext>::encode_crate_root
31: 0x7fdba315a3ca - rustc_metadata[a14ae4d71db231a9]::rmeta::encoder::encode_metadata_impl
32: 0x7fdba31746d1 - rustc_data_structures[c194a60a15a7bbb1]::sync::join::<rustc_metadata[a14ae4d71db231a9]::rmeta::encoder::encode_metadata::{closure#0}, rustc_metadata[a14ae4d71db231a9]::rmeta::encoder::encode_metadata::{closure#1}, rustc_metadata[a14ae4d71db231a9]::rmeta::encoder::EncodedMetadata, ()>
33: 0x7fdba3159b76 - rustc_metadata[a14ae4d71db231a9]::rmeta::encoder::encode_metadata
34: 0x7fdba2b18ed3 - <rustc_interface[dacacaf3651fe347]::passes::QueryContext>::enter::<<rustc_interface[dacacaf3651fe347]::queries::Queries>::ongoing_codegen::{closure#0}::{closure#0}, core[864d7ae58f623181]::result::Result<alloc[642b2cd0ec1e1a81]::boxed::Box<dyn core[864d7ae58f623181]::any::Any>, rustc_errors[14f27e81a88a2c7]::ErrorGuaranteed>>
35: 0x7fdba2b3f1ff - <rustc_interface[dacacaf3651fe347]::queries::Queries>::ongoing_codegen
36: 0x7fdba2ae0acb - <rustc_interface[dacacaf3651fe347]::interface::Compiler>::enter::<rustc_driver[caca827775d68846]::run_compiler::{closure#1}::{closure#2}, core[864d7ae58f623181]::result::Result<core[864d7ae58f623181]::option::Option<rustc_interface[dacacaf3651fe347]::queries::Linker>, rustc_errors[14f27e81a88a2c7]::ErrorGuaranteed>>
37: 0x7fdba2b0a3ff - rustc_span[ff646084812721ee]::with_source_map::<core[864d7ae58f623181]::result::Result<(), rustc_errors[14f27e81a88a2c7]::ErrorGuaranteed>, rustc_interface[dacacaf3651fe347]::interface::create_compiler_and_run<core[864d7ae58f623181]::result::Result<(), rustc_errors[14f27e81a88a2c7]::ErrorGuaranteed>, rustc_driver[caca827775d68846]::run_compiler::{closure#1}>::{closure#1}>
38: 0x7fdba2af4d64 - rustc_interface[dacacaf3651fe347]::interface::create_compiler_and_run::<core[864d7ae58f623181]::result::Result<(), rustc_errors[14f27e81a88a2c7]::ErrorGuaranteed>, rustc_driver[caca827775d68846]::run_compiler::{closure#1}>
39: 0x7fdba2addfa1 - <scoped_tls[d6203f3b3010b98e]::ScopedKey<rustc_span[ff646084812721ee]::SessionGlobals>>::set::<rustc_interface[dacacaf3651fe347]::interface::run_compiler<core[864d7ae58f623181]::result::Result<(), rustc_errors[14f27e81a88a2c7]::ErrorGuaranteed>, rustc_driver[caca827775d68846]::run_compiler::{closure#1}>::{closure#0}, core[864d7ae58f623181]::result::Result<(), rustc_errors[14f27e81a88a2c7]::ErrorGuaranteed>>
40: 0x7fdba2af754f - std[fd2a1eaf3e081d4d]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[dacacaf3651fe347]::util::run_in_thread_pool_with_globals<rustc_interface[dacacaf3651fe347]::interface::run_compiler<core[864d7ae58f623181]::result::Result<(), rustc_errors[14f27e81a88a2c7]::ErrorGuaranteed>, rustc_driver[caca827775d68846]::run_compiler::{closure#1}>::{closure#0}, core[864d7ae58f623181]::result::Result<(), rustc_errors[14f27e81a88a2c7]::ErrorGuaranteed>>::{closure#0}, core[864d7ae58f623181]::result::Result<(), rustc_errors[14f27e81a88a2c7]::ErrorGuaranteed>>
41: 0x7fdba2af7689 - <<std[fd2a1eaf3e081d4d]::thread::Builder>::spawn_unchecked_<rustc_interface[dacacaf3651fe347]::util::run_in_thread_pool_with_globals<rustc_interface[dacacaf3651fe347]::interface::run_compiler<core[864d7ae58f623181]::result::Result<(), rustc_errors[14f27e81a88a2c7]::ErrorGuaranteed>, rustc_driver[caca827775d68846]::run_compiler::{closure#1}>::{closure#0}, core[864d7ae58f623181]::result::Result<(), rustc_errors[14f27e81a88a2c7]::ErrorGuaranteed>>::{closure#0}, core[864d7ae58f623181]::result::Result<(), rustc_errors[14f27e81a88a2c7]::ErrorGuaranteed>>::{closure#1} as core[864d7ae58f623181]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
42: 0x7fdba02aabf3 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h211dae6d8dec3611
at /rustc/4ca19e09d302a4cbde14f9cb1bc109179dc824cd/library/alloc/src/boxed.rs:1866:9
43: 0x7fdba02aabf3 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::hb54334e8a7bb1f12
at /rustc/4ca19e09d302a4cbde14f9cb1bc109179dc824cd/library/alloc/src/boxed.rs:1866:9
44: 0x7fdba02aabf3 - std::sys::unix::thread::Thread::new::thread_start::hf8b57655f2f2e68e
at /rustc/4ca19e09d302a4cbde14f9cb1bc109179dc824cd/library/std/src/sys/unix/thread.rs:108:17
45: 0x7fdba00835c2 - start_thread
46: 0x7fdba0108584 - __clone
47: 0x0 - <unknown>
error: internal compiler error: unexpected panic
note: 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.62.0-nightly (4ca19e09d 2022-04-19) running on x86_64-unknown-linux-gnu
note: compiler flags: --crate-type lib -C embed-bitcode=no -C debuginfo=2 -C incremental
note: some of the compiler flags provided by cargo are hidden
query stack during panic:
#0 [mir_drops_elaborated_and_const_checked] elaborating drops for `<impl at src/lib.rs:9:9: 32:10>::merge`
#1 [optimized_mir] optimizing MIR for `<impl at src/lib.rs:9:9: 32:10>::merge`
end of query stack
error: could not compile `playground`
Backtrace
:: RUST_BACKTRACE=1 cargo b
Compiling playground v0.1.0 (/home/erxkk/Source/erxkk/playground)
thread 'rustc' panicked at 'to_const_int doesn't work on scalar pairs: InterpErrorInfo(InterpErrorInfoInner { kind: using uninitialized data, but this operation requires initialized memory, backtrace: None })', /rustc/4ca19e09d302a4cbde14f9cb1bc109179dc824cd/compiler/rustc_const_eval/src/interpret/operand.rs:243:36
stack backtrace:
0: rust_begin_unwind
at /rustc/4ca19e09d302a4cbde14f9cb1bc109179dc824cd/library/std/src/panicking.rs:584:5
1: core::panicking::panic_fmt
at /rustc/4ca19e09d302a4cbde14f9cb1bc109179dc824cd/library/core/src/panicking.rs:142:14
2: core::result::unwrap_failed
at /rustc/4ca19e09d302a4cbde14f9cb1bc109179dc824cd/library/core/src/result.rs:1785:5
3: <rustc_const_eval::interpret::operand::ImmTy>::to_const_int
4: <rustc_mir_transform::const_prop_lint::ConstPropagator>::check_binary_op
5: <rustc_mir_transform::const_prop_lint::ConstPropagator as rustc_middle::mir::visit::Visitor>::visit_body
6: <rustc_mir_transform::const_prop_lint::ConstProp as rustc_mir_transform::pass_manager::MirLint>::run_lint
7: rustc_mir_transform::pass_manager::run_passes
8: rustc_mir_transform::mir_drops_elaborated_and_const_checked
9: <rustc_query_system::dep_graph::graph::DepGraph<rustc_middle::dep_graph::dep_node::DepKind>>::with_task::<rustc_middle::ty::context::TyCtxt, rustc_middle::ty::WithOptConstParam<rustc_span::def_id::LocalDefId>, &rustc_data_structures::steal::Steal<rustc_middle::mir::Body>>
10: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::plumbing::QueryCtxt, rustc_query_system::query::caches::DefaultCache<rustc_middle::ty::WithOptConstParam<rustc_span::def_id::LocalDefId>, &rustc_data_structures::steal::Steal<rustc_middle::mir::Body>>>
11: <rustc_query_impl::Queries as rustc_middle::ty::query::QueryEngine>::mir_drops_elaborated_and_const_checked
12: rustc_mir_transform::optimized_mir
13: <rustc_query_system::dep_graph::graph::DepGraph<rustc_middle::dep_graph::dep_node::DepKind>>::with_task::<rustc_middle::ty::context::TyCtxt, rustc_span::def_id::DefId, &rustc_middle::mir::Body>
14: rustc_query_system::query::plumbing::try_execute_query::<rustc_query_impl::plumbing::QueryCtxt, rustc_query_system::query::caches::DefaultCache<rustc_span::def_id::DefId, &rustc_middle::mir::Body>>
15: <rustc_query_impl::Queries as rustc_middle::ty::query::QueryEngine>::optimized_mir
16: <rustc_metadata::rmeta::encoder::EncodeContext>::encode_crate_root
17: rustc_metadata::rmeta::encoder::encode_metadata_impl
18: rustc_data_structures::sync::join::<rustc_metadata::rmeta::encoder::encode_metadata::{closure#0}, rustc_metadata::rmeta::encoder::encode_metadata::{closure#1}, rustc_metadata::rmeta::encoder::EncodedMetadata, ()>
19: rustc_metadata::rmeta::encoder::encode_metadata
20: <rustc_interface::passes::QueryContext>::enter::<<rustc_interface::queries::Queries>::ongoing_codegen::{closure#0}::{closure#0}, core::result::Result<alloc::boxed::Box<dyn core::any::Any>, rustc_errors::ErrorGuaranteed>>
21: <rustc_interface::queries::Queries>::ongoing_codegen
22: <rustc_interface::interface::Compiler>::enter::<rustc_driver::run_compiler::{closure#1}::{closure#2}, core::result::Result<core::option::Option<rustc_interface::queries::Linker>, rustc_errors::ErrorGuaranteed>>
23: rustc_span::with_source_map::<core::result::Result<(), rustc_errors::ErrorGuaranteed>, rustc_interface::interface::create_compiler_and_run<core::result::Result<(), rustc_errors::ErrorGuaranteed>, rustc_driver::run_compiler::{closure#1}>::{closure#1}>
24: rustc_interface::interface::create_compiler_and_run::<core::result::Result<(), rustc_errors::ErrorGuaranteed>, rustc_driver::run_compiler::{closure#1}>
25: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::interface::run_compiler<core::result::Result<(), rustc_errors::ErrorGuaranteed>, rustc_driver::run_compiler::{closure#1}>::{closure#0}, core::result::Result<(), rustc_errors::ErrorGuaranteed>>
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
error: internal compiler error: unexpected panic
note: 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.62.0-nightly (4ca19e09d 2022-04-19) running on x86_64-unknown-linux-gnu
note: compiler flags: --crate-type lib -C embed-bitcode=no -C debuginfo=2 -C incremental
note: some of the compiler flags provided by cargo are hidden
query stack during panic:
#0 [mir_drops_elaborated_and_const_checked] elaborating drops for `<impl at src/lib.rs:9:9: 32:10>::merge`
#1 [optimized_mir] optimizing MIR for `<impl at src/lib.rs:9:9: 32:10>::merge`
end of query stack
error: could not compile `playground`
Metadata
Metadata
Assignees
Labels
C-bugCategory: This is a bug.Category: This is a bug.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️P-mediumMedium priorityMedium priorityT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.regression-from-stable-to-stablePerformance or correctness regression from one stable version to another.Performance or correctness regression from one stable version to another.