Skip to content

ICE invalid immediate for given destination place: scalar value has wrong size #149920

@matthiaskrgr

Description

@matthiaskrgr

snippet

//@compile-flags: -Zmir-enable-passes=+DataflowConstProp --crate-type lib --edition=2021
pub async fn a() -> u32 {
    unsafe { std::mem::transmute(1usize) }
}

original:

//@ edition:2018
// .gitattributes file in this directory should enforce it.

/// [https://bloob.blob]
pub async fn a() -> u32 { std::mem::transmute(1usize) }

Version information

rustc 1.94.0-nightly (5b150d238 2025-12-11)
binary: rustc
commit-hash: 5b150d238fbd4fe7bc2cd3140d8e6fb4406099fa
commit-date: 2025-12-11
host: x86_64-unknown-linux-gnu
release: 1.94.0-nightly
LLVM version: 21.1.5

Command:
/home/matthias/.rustup/toolchains/master/bin/rustc -Zmir-enable-passes=+DataflowConstProp --crate-type lib --edition=2021

Program output

error[E0512]: cannot transmute between types of different sizes, or dependently-sized types
 --> BC3F301FE4B2C0AC50F0C3F13FAF1D2AE4AD05443021AFF4CB58B5260D844868.rs:3:14
  |
3 |     unsafe { std::mem::transmute(1usize) }
  |              ^^^^^^^^^^^^^^^^^^^
  |
  = note: source type: `usize` (64 bits)
  = note: target type: `u32` (32 bits)


thread 'rustc' (1521152) panicked at /rustc-dev/c4dc70ee0ad7f811fb32e5bed9cd6c7b37beed4e/compiler/rustc_const_eval/src/interpret/operand.rs:123:17:
assertion `left == right` failed: invalid immediate for given destination place: scalar value has wrong size
  left: Size(8 bytes)
 right: Size(4 bytes)
stack backtrace:
   0:     0x7f09c44c6133 - <<std[4ba5a76045f2e409]::sys::backtrace::BacktraceLock>::print::DisplayBacktrace as core[f3ddf6de697c19ed]::fmt::Display>::fmt
   1:     0x7f09c4c10608 - core[f3ddf6de697c19ed]::fmt::write
   2:     0x7f09c44dc846 - <std[4ba5a76045f2e409]::sys::stdio::unix::Stderr as std[4ba5a76045f2e409]::io::Write>::write_fmt
   3:     0x7f09c449c8f8 - std[4ba5a76045f2e409]::panicking::default_hook::{closure#0}
   4:     0x7f09c44ba003 - std[4ba5a76045f2e409]::panicking::default_hook
   5:     0x7f09c350a247 - std[4ba5a76045f2e409]::panicking::update_hook::<alloc[7f145662aca8c9c]::boxed::Box<rustc_driver_impl[6aae568bf99046c3]::install_ice_hook::{closure#1}>>::{closure#0}
   6:     0x7f09c44ba2e2 - std[4ba5a76045f2e409]::panicking::panic_with_hook
   7:     0x7f09c449c9b8 - std[4ba5a76045f2e409]::panicking::panic_handler::{closure#0}
   8:     0x7f09c44911d9 - std[4ba5a76045f2e409]::sys::backtrace::__rust_end_short_backtrace::<std[4ba5a76045f2e409]::panicking::panic_handler::{closure#0}, !>
   9:     0x7f09c449e56d - __rustc[4d7f59a3bb196642]::rust_begin_unwind
  10:     0x7f09c10b853c - core[f3ddf6de697c19ed]::panicking::panic_fmt
  11:     0x7f09c2f22503 - core[f3ddf6de697c19ed]::panicking::assert_failed_inner
  12:     0x7f09c3abee2e - core[f3ddf6de697c19ed]::panicking::assert_failed::<rustc_abi[323bcc08463c2da1]::Size, rustc_abi[323bcc08463c2da1]::Size>
  13:     0x7f09c6969ae1 - <rustc_const_eval[a6b790c01f68a297]::interpret::operand::Immediate>::assert_matches_abi::<rustc_const_eval[a6b790c01f68a297]::interpret::eval_context::InterpCx<rustc_const_eval[a6b790c01f68a297]::const_eval::dummy_machine::DummyMachine>>.cold
  14:     0x7f09c57fcdfd - <rustc_const_eval[a6b790c01f68a297]::interpret::eval_context::InterpCx<rustc_const_eval[a6b790c01f68a297]::const_eval::dummy_machine::DummyMachine>>::write_immediate_to_mplace_no_validate
  15:     0x7f09c57fcd5b - <rustc_const_eval[a6b790c01f68a297]::interpret::eval_context::InterpCx<rustc_const_eval[a6b790c01f68a297]::const_eval::dummy_machine::DummyMachine>>::write_immediate_no_validate::<rustc_const_eval[a6b790c01f68a297]::interpret::place::PlaceTy>
  16:     0x7f09c3c82c97 - rustc_mir_transform[47693a1e9fa3d5e6]::dataflow_const_prop::try_write_constant
  17:     0x7f09c3c82ec2 - rustc_mir_transform[47693a1e9fa3d5e6]::dataflow_const_prop::try_write_constant
  18:     0x7f09c3c78062 - <rustc_mir_transform[47693a1e9fa3d5e6]::dataflow_const_prop::Collector>::try_make_constant
  19:     0x7f09c3cee0b8 - <rustc_mir_transform[47693a1e9fa3d5e6]::dataflow_const_prop::Collector as rustc_mir_dataflow[db5e4e02463b2c0b]::framework::visitor::ResultsVisitor<rustc_mir_transform[47693a1e9fa3d5e6]::dataflow_const_prop::ConstAnalysis>>::visit_after_primary_statement_effect
  20:     0x7f09c3c9e96a - <rustc_mir_transform[47693a1e9fa3d5e6]::dataflow_const_prop::DataflowConstProp as rustc_mir_transform[47693a1e9fa3d5e6]::pass_manager::MirPass>::run_pass
  21:     0x7f09c4c073ba - rustc_mir_transform[47693a1e9fa3d5e6]::run_optimization_passes
  22:     0x7f09c5a11152 - rustc_mir_transform[47693a1e9fa3d5e6]::optimized_mir
  23:     0x7f09c5a10d6f - rustc_query_impl[23ea27e8a90d8b37]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[23ea27e8a90d8b37]::query_impl::optimized_mir::dynamic_query::{closure#2}::{closure#0}, rustc_middle[21423b4d0c52388d]::query::erase::Erased<[u8; 8usize]>>
  24:     0x7f09c4c18806 - rustc_query_system[2e8d7520d0881f27]::query::plumbing::try_execute_query::<rustc_query_impl[23ea27e8a90d8b37]::DynamicConfig<rustc_query_system[2e8d7520d0881f27]::query::caches::DefIdCache<rustc_middle[21423b4d0c52388d]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[23ea27e8a90d8b37]::plumbing::QueryCtxt, false>
  25:     0x7f09c4c17ddb - rustc_query_impl[23ea27e8a90d8b37]::query_impl::optimized_mir::get_query_non_incr::__rust_end_short_backtrace
  26:     0x7f09c5fb96c1 - <rustc_middle[21423b4d0c52388d]::ty::context::TyCtxt>::coroutine_layout
  27:     0x7f09c554898f - rustc_ty_utils[1163db851dfce16c]::layout::layout_of_uncached
  28:     0x7f09c5538bc9 - rustc_ty_utils[1163db851dfce16c]::layout::layout_of
  29:     0x7f09c5538b2a - rustc_query_impl[23ea27e8a90d8b37]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[23ea27e8a90d8b37]::query_impl::layout_of::dynamic_query::{closure#2}::{closure#0}, rustc_middle[21423b4d0c52388d]::query::erase::Erased<[u8; 16usize]>>
  30:     0x7f09c55379e3 - rustc_query_system[2e8d7520d0881f27]::query::plumbing::try_execute_query::<rustc_query_impl[23ea27e8a90d8b37]::DynamicConfig<rustc_query_system[2e8d7520d0881f27]::query::caches::DefaultCache<rustc_middle[21423b4d0c52388d]::ty::PseudoCanonicalInput<rustc_middle[21423b4d0c52388d]::ty::Ty>, rustc_middle[21423b4d0c52388d]::query::erase::Erased<[u8; 16usize]>>, false, true, false>, rustc_query_impl[23ea27e8a90d8b37]::plumbing::QueryCtxt, false>
  31:     0x7f09c553761a - rustc_query_impl[23ea27e8a90d8b37]::query_impl::layout_of::get_query_non_incr::__rust_end_short_backtrace
  32:     0x7f09c5ce8a89 - <rustc_mir_transform[47693a1e9fa3d5e6]::known_panics_lint::KnownPanicsLint as rustc_mir_transform[47693a1e9fa3d5e6]::pass_manager::MirLint>::run_lint
  33:     0x7f09c4c0c59e - rustc_mir_transform[47693a1e9fa3d5e6]::run_analysis_to_runtime_passes
  34:     0x7f09c5813000 - rustc_mir_transform[47693a1e9fa3d5e6]::mir_drops_elaborated_and_const_checked
  35:     0x7f09c58129a9 - rustc_query_impl[23ea27e8a90d8b37]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[23ea27e8a90d8b37]::query_impl::mir_drops_elaborated_and_const_checked::dynamic_query::{closure#2}::{closure#0}, rustc_middle[21423b4d0c52388d]::query::erase::Erased<[u8; 8usize]>>
  36:     0x7f09c4d9a637 - rustc_query_system[2e8d7520d0881f27]::query::plumbing::try_execute_query::<rustc_query_impl[23ea27e8a90d8b37]::DynamicConfig<rustc_data_structures[e7ed3fe572b1bf09]::vec_cache::VecCache<rustc_span[75d45f3c27fef647]::def_id::LocalDefId, rustc_middle[21423b4d0c52388d]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[2e8d7520d0881f27]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[23ea27e8a90d8b37]::plumbing::QueryCtxt, false>
  37:     0x7f09c4d99cc9 - rustc_query_impl[23ea27e8a90d8b37]::query_impl::mir_drops_elaborated_and_const_checked::get_query_non_incr::__rust_end_short_backtrace
  38:     0x7f09c4d96fbf - <rustc_middle[21423b4d0c52388d]::ty::context::TyCtxt>::par_hir_body_owners::<rustc_interface[eefada1bb51de1fc]::passes::run_required_analyses::{closure#1}::{closure#0}>::{closure#0}
  39:     0x7f09c4d946fa - rustc_interface[eefada1bb51de1fc]::passes::analysis
  40:     0x7f09c4d93b91 - rustc_query_impl[23ea27e8a90d8b37]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[23ea27e8a90d8b37]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle[21423b4d0c52388d]::query::erase::Erased<[u8; 0usize]>>
  41:     0x7f09c5d80b20 - rustc_query_system[2e8d7520d0881f27]::query::plumbing::try_execute_query::<rustc_query_impl[23ea27e8a90d8b37]::DynamicConfig<rustc_query_system[2e8d7520d0881f27]::query::caches::SingleCache<rustc_middle[21423b4d0c52388d]::query::erase::Erased<[u8; 0usize]>>, false, false, false>, rustc_query_impl[23ea27e8a90d8b37]::plumbing::QueryCtxt, false>
  42:     0x7f09c5d80776 - rustc_query_impl[23ea27e8a90d8b37]::query_impl::analysis::get_query_non_incr::__rust_end_short_backtrace
  43:     0x7f09c5f14b13 - <rustc_interface[eefada1bb51de1fc]::passes::create_and_enter_global_ctxt<core[f3ddf6de697c19ed]::option::Option<rustc_interface[eefada1bb51de1fc]::queries::Linker>, rustc_driver_impl[6aae568bf99046c3]::run_compiler::{closure#0}::{closure#2}>::{closure#2} as core[f3ddf6de697c19ed]::ops::function::FnOnce<(&rustc_session[b2db305ad29886f6]::session::Session, rustc_middle[21423b4d0c52388d]::ty::context::CurrentGcx, alloc[7f145662aca8c9c]::sync::Arc<rustc_data_structures[e7ed3fe572b1bf09]::jobserver::Proxy>, &std[4ba5a76045f2e409]::sync::once_lock::OnceLock<rustc_middle[21423b4d0c52388d]::ty::context::GlobalCtxt>, &rustc_data_structures[e7ed3fe572b1bf09]::sync::worker_local::WorkerLocal<rustc_middle[21423b4d0c52388d]::arena::Arena>, &rustc_data_structures[e7ed3fe572b1bf09]::sync::worker_local::WorkerLocal<rustc_hir[96c42a8d71e5a9b1]::Arena>, rustc_driver_impl[6aae568bf99046c3]::run_compiler::{closure#0}::{closure#2})>>::call_once::{shim:vtable#0}
  44:     0x7f09c5de1205 - rustc_interface[eefada1bb51de1fc]::interface::run_compiler::<(), rustc_driver_impl[6aae568bf99046c3]::run_compiler::{closure#0}>::{closure#1}
  45:     0x7f09c5d36b0a - std[4ba5a76045f2e409]::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface[eefada1bb51de1fc]::util::run_in_thread_with_globals<rustc_interface[eefada1bb51de1fc]::util::run_in_thread_pool_with_globals<rustc_interface[eefada1bb51de1fc]::interface::run_compiler<(), rustc_driver_impl[6aae568bf99046c3]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
  46:     0x7f09c5d368dd - <std[4ba5a76045f2e409]::thread::lifecycle::spawn_unchecked<rustc_interface[eefada1bb51de1fc]::util::run_in_thread_with_globals<rustc_interface[eefada1bb51de1fc]::util::run_in_thread_pool_with_globals<rustc_interface[eefada1bb51de1fc]::interface::run_compiler<(), rustc_driver_impl[6aae568bf99046c3]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core[f3ddf6de697c19ed]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  47:     0x7f09c5d34cb8 - <std[4ba5a76045f2e409]::sys::thread::unix::Thread>::new::thread_start
  48:     0x7f09bf6969cb - <unknown>
  49:     0x7f09bf71aa0c - <unknown>
  50:                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: please make sure that you have updated to the latest nightly

note: please attach the file at `/tmp/im/rustc-ice-2025-12-12T15_23_24-1521150.txt` to your bug report

note: compiler flags: -Z mir-enable-passes=+DataflowConstProp --crate-type lib

query stack during panic:
#0 [optimized_mir] optimizing MIR for `a::{closure#0}`
#1 [layout_of] computing layout of `{async fn body of a()}`
#2 [mir_drops_elaborated_and_const_checked] elaborating drops for `a`
#3 [analysis] running analysis passes on crate `BC3F301FE4B2C0AC50F0C3F13FAF1D2AE4AD05443021AFF4CB58B5260D844868`
end of query stack
error: aborting due to 1 previous error

For more information about this error, try `rustc --explain E0512`.

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-mir-optArea: MIR optimizationsC-bugCategory: This is a bug.I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️I-prioritizeIssue: Indicates that prioritization has been requested for this issue.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.needs-triageThis issue may need triage. Remove it if it has been sufficiently triaged.regression-untriagedUntriaged performance or correctness regression.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions