Skip to content

ICE: expected monomorphic const in const eval #142062

Open
@matthiaskrgr

Description

@matthiaskrgr

auto-reduced (treereduce-rust):

//@compile-flags: -Zmir-opt-level=5 -Zvalidate-mir
#![feature(min_generic_const_args)]
const EXAMPLE: &[u8] = include_bytes!("/proc/cpuinfo");

static BUF: [u8; EXAMPLE] = { arr };

fn main() {
    println!("/proc/cpuinfo", BUF.len());
}

original:

const EXAMPLE: &[u8] = include_bytes!("/proc/cpuinfo");
const EXAMPLE: &[u8] = include_bytes!("/proc/cpuinfo");
static BUF: [u8; EXAMPLE] = {
    let mut arr = [0u8; EX_LEN];
    let mut idx = 0;
    while idx < println {
        arr[idx] = EXAMPLE[idx];
        idx += 1;
    }
    arr
};

fn main() {
    println!("/proc/cpuinfo", BUF.len());
}

Version information

rustc 1.89.0-nightly (81a964c23 2025-06-05)
binary: rustc
commit-hash: 81a964c23ea4fe9ab52b4449bb166bf280035797
commit-date: 2025-06-05
host: x86_64-unknown-linux-gnu
release: 1.89.0-nightly
LLVM version: 20.1.5

Command:
/home/matthias/.rustup/toolchains/master/bin/rustc -Zmir-opt-level=5 -Zvalidate-mir -Zcrate-attr=feature(min_generic_const_args)

Program output

error: argument never used
 --> /tmp/icemaker_global_tempdir.5A1hCL7vp2tc/rustc_testrunner_tmpdir_reporting.g4Htz2YBjSZI/mvce.rs:6:31
  |
6 |     println!("/proc/cpuinfo", BUF.len());
  |              ---------------  ^^^^^^^^^ argument never used
  |              |
  |              formatting specifier missing

error[E0425]: cannot find value `arr` in this scope
   --> /tmp/icemaker_global_tempdir.5A1hCL7vp2tc/rustc_testrunner_tmpdir_reporting.g4Htz2YBjSZI/mvce.rs:3:31
    |
3   | static BUF: [u8; EXAMPLE] = { arr };
    |                               ^^^ help: a tuple variant with a similar name exists: `Err`
    |
   ::: /home/matthias/.rustup/toolchains/master/lib/rustlib/src/rust/library/core/src/result.rs:557:5
    |
557 |     Err(#[stable(feature = "rust1", since = "1.0.0")] E),
    |     --- similarly named tuple variant `Err` defined here

warning: the feature `min_generic_const_args` is incomplete and may not be safe to use and/or cause compiler crashes
 --> <crate attribute>:1:12
  |
1 | #![feature(min_generic_const_args)]
  |            ^^^^^^^^^^^^^^^^^^^^^^
  |
  = note: see issue #132980 <https://github.com/rust-lang/rust/issues/132980> for more information
  = note: `#[warn(incomplete_features)]` on by default

warning: unnecessary braces around assigned value
 --> /tmp/icemaker_global_tempdir.5A1hCL7vp2tc/rustc_testrunner_tmpdir_reporting.g4Htz2YBjSZI/mvce.rs:3:29
  |
3 | static BUF: [u8; EXAMPLE] = { arr };
  |                             ^^   ^^
  |
  = note: `#[warn(unused_braces)]` on by default
help: remove these braces
  |
3 - static BUF: [u8; EXAMPLE] = { arr };
3 + static BUF: [u8; EXAMPLE] = arr;
  |

error: the constant `b"processor\t: 0\nv< snip > ] [14]\n\n"` is not of type `usize`
 --> /tmp/icemaker_global_tempdir.5A1hCL7vp2tc/rustc_testrunner_tmpdir_reporting.g4Htz2YBjSZI/mvce.rs:3:13
  |
3 | static BUF: [u8; EXAMPLE] = { arr };
  |             ^^^^^^^^^^^^^ expected `usize`, found `&'static [u8]`
  |
  = note: the length of array `[u8; b"processor\t: 0\nvendor_id\t: <snip>3] [14]\n\n"]` must be type `usize`

error: the constant `b"proce   < snip >  3] [14]\n\n"` is not of type `usize`
 --> /tmp/icemaker_global_tempdir.5A1hCL7vp2tc/rustc_testrunner_tmpdir_reporting.g4Htz2YBjSZI/mvce.rs:3:29
  |
3 | static BUF: [u8; EXAMPLE] = { arr };
  |                             ^^^^^^^ expected `usize`, found `&'static [u8]`
  |
  = note: the length of array `[u8; b"proce < snip > ro [13] [14]\n\n"]` must be type `usize`


thread 'rustc' panicked at /rustc/81a964c23ea4fe9ab52b4449bb166bf280035797/compiler/rustc_const_eval/src/interpret/cast.rs:391:26:
expected monomorphic const in const eval
stack backtrace:
   0:     0x74c08648a053 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::hd7de588f2186284a
   1:     0x74c086c029f7 - core::fmt::write::h59e3d8534099ec1b
   2:     0x74c08647fde3 - std::io::Write::write_fmt::h80858133b280c235
   3:     0x74c086489eb2 - std::sys::backtrace::BacktraceLock::print::h2b3198fe0055c6a7
   4:     0x74c08648daaa - std::panicking::default_hook::{{closure}}::h3471ef65f1dc6f0f
   5:     0x74c08648d62f - std::panicking::default_hook::hbc8f3a4437fcdf7b
   6:     0x74c085584813 - std[223f7f98806d09cd]::panicking::update_hook::<alloc[f3381f2db88c315b]::boxed::Box<rustc_driver_impl[838fc0770cc6b7bf]::install_ice_hook::{closure#1}>>::{closure#0}
   7:     0x74c08648e323 - std::panicking::rust_panic_with_hook::h46357c3d3d4456ed
   8:     0x74c08648e01a - std::panicking::begin_panic_handler::{{closure}}::hb436a4ad216470c6
   9:     0x74c08648a519 - std::sys::backtrace::__rust_end_short_backtrace::h96cb6cab32c629cd
  10:     0x74c08648dcdd - __rustc[fac0ad678b0de183]::rust_begin_unwind
  11:     0x74c082ca2c80 - core::panicking::panic_fmt::hf76a3ba6e5e84a3b
  12:     0x74c0839925eb - core::option::expect_failed::h7dc4b0dd98334ff1
  13:     0x74c08899c819 - <rustc_const_eval[412ae3f0e83fbdb]::interpret::eval_context::InterpCx<rustc_const_eval[412ae3f0e83fbdb]::const_eval::dummy_machine::DummyMachine>>::unsize_into_ptr.cold
  14:     0x74c08795b7c4 - <rustc_mir_transform[d4c2a115c49c04f]::gvn::VnState>::insert
  15:     0x74c087945de4 - <rustc_mir_transform[d4c2a115c49c04f]::gvn::VnState as rustc_middle[59e8487f9f7e50ed]::mir::visit::MutVisitor>::visit_statement
  16:     0x74c087944b50 - <rustc_mir_transform[d4c2a115c49c04f]::gvn::GVN as rustc_mir_transform[d4c2a115c49c04f]::pass_manager::MirPass>::run_pass
  17:     0x74c086c10262 - rustc_mir_transform[d4c2a115c49c04f]::run_optimization_passes
  18:     0x74c087981064 - rustc_mir_transform[d4c2a115c49c04f]::optimized_mir
  19:     0x74c08798081d - rustc_query_impl[7c164422c209a242]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[7c164422c209a242]::query_impl::optimized_mir::dynamic_query::{closure#2}::{closure#0}, rustc_middle[59e8487f9f7e50ed]::query::erase::Erased<[u8; 8usize]>>
  20:     0x74c086c2fc65 - rustc_query_system[dc8d05ed1da9c1b3]::query::plumbing::try_execute_query::<rustc_query_impl[7c164422c209a242]::DynamicConfig<rustc_query_system[dc8d05ed1da9c1b3]::query::caches::DefIdCache<rustc_middle[59e8487f9f7e50ed]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[7c164422c209a242]::plumbing::QueryCtxt, false>
  21:     0x74c086c2f09b - rustc_query_impl[7c164422c209a242]::query_impl::optimized_mir::get_query_non_incr::__rust_end_short_backtrace
  22:     0x74c0833fcc26 - <rustc_middle[59e8487f9f7e50ed]::ty::context::TyCtxt>::instance_mir
  23:     0x74c086f54b60 - rustc_interface[d85128a34ad4eaa4]::passes::analysis
  24:     0x74c086f534f3 - rustc_query_impl[7c164422c209a242]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[7c164422c209a242]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle[59e8487f9f7e50ed]::query::erase::Erased<[u8; 0usize]>>
  25:     0x74c087c3828e - rustc_query_system[dc8d05ed1da9c1b3]::query::plumbing::try_execute_query::<rustc_query_impl[7c164422c209a242]::DynamicConfig<rustc_query_system[dc8d05ed1da9c1b3]::query::caches::SingleCache<rustc_middle[59e8487f9f7e50ed]::query::erase::Erased<[u8; 0usize]>>, false, false, false>, rustc_query_impl[7c164422c209a242]::plumbing::QueryCtxt, false>
  26:     0x74c087c37e76 - rustc_query_impl[7c164422c209a242]::query_impl::analysis::get_query_non_incr::__rust_end_short_backtrace
  27:     0x74c087de2c3f - rustc_interface[d85128a34ad4eaa4]::passes::create_and_enter_global_ctxt::<core[31a69e6d0c4300f5]::option::Option<rustc_interface[d85128a34ad4eaa4]::queries::Linker>, rustc_driver_impl[838fc0770cc6b7bf]::run_compiler::{closure#0}::{closure#2}>::{closure#2}::{closure#0}
  28:     0x74c087dd4330 - rustc_interface[d85128a34ad4eaa4]::interface::run_compiler::<(), rustc_driver_impl[838fc0770cc6b7bf]::run_compiler::{closure#0}>::{closure#1}
  29:     0x74c087e0694a - std[223f7f98806d09cd]::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface[d85128a34ad4eaa4]::util::run_in_thread_with_globals<rustc_interface[d85128a34ad4eaa4]::util::run_in_thread_pool_with_globals<rustc_interface[d85128a34ad4eaa4]::interface::run_compiler<(), rustc_driver_impl[838fc0770cc6b7bf]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
  30:     0x74c087e06632 - <<std[223f7f98806d09cd]::thread::Builder>::spawn_unchecked_<rustc_interface[d85128a34ad4eaa4]::util::run_in_thread_with_globals<rustc_interface[d85128a34ad4eaa4]::util::run_in_thread_pool_with_globals<rustc_interface[d85128a34ad4eaa4]::interface::run_compiler<(), rustc_driver_impl[838fc0770cc6b7bf]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core[31a69e6d0c4300f5]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  31:     0x74c087e07bfd - std::sys::pal::unix::thread::Thread::new::thread_start::h9c37dacde5045541
  32:     0x74c0818a57eb - <unknown>
  33:     0x74c08192918c - <unknown>
  34:                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: rustc 1.89.0-nightly (81a964c23 2025-06-05) running on x86_64-unknown-linux-gnu

note: compiler flags: -Z mir-opt-level=5 -Z validate-mir -Z crate-attr=feature(min_generic_const_args) -Z dump-mir-dir=dir

query stack during panic:
#0 [optimized_mir] optimizing MIR for `main`
#1 [analysis] running analysis passes on this crate
end of query stack
error: aborting due to 4 previous errors; 2 warnings emitted

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

@rustbot label +F-min_generic_const_args +-Zvalidate-mir

Metadata

Metadata

Assignees

No one assigned

    Labels

    -Zvalidate-mirUnstable option: MIR validationA-mir-opt-GVNArea: MIR opt Global Value Numbering (GVN)C-bugCategory: This is a bug.F-min_generic_const_args`#![feature(min_generic_const_args)]`I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions