rust-lang / rust-lang/rustc_codegen_cranelift

ICE: src/isa/x64/abi.rs:743:68: 'called `Result::unwrap()` on an `Err` value: TryFromIntError(())

Open
#1,552 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

C-bug upstream
Dominant language
Rust
Stars
2.1k
Forks
157
Avg merge
1d 19h
Merged PRs (30d)
3

Description

auto-reduced (treereduce-rust):

//@compile-flags: -Zcodegen-backend=cranelift --crate-type=lib
//

pub const fn foo() {
    let mut array = [[0; 0x12345679]; 1];
}

original:

//@ check-pass
// Regression test for issue #79152
//
// Tests that we can index an array in a const function

pub const fn foo() {
    let mut array = [[0; 0x12345679]; 1];
    array[0][3490] = 1;
}

Version information

rustc 1.86.0-nightly (1891c2866 2025-01-04)
binary: rustc
commit-hash: 1891c28669863bf7ed3ef8f43f2d3fa546f34861
commit-date: 2025-01-04
host: x86_64-unknown-linux-gnu
release: 1.86.0-nightly
LLVM version: 19.1.6

Command:
/home/matthias/.rustup/toolchains/master/bin/rustc -Zcodegen-backend=cranelift --crate-type=lib

Program output

warning: unused variable: `array`
 --> /tmp/icemaker_global_tempdir.eFjNhF4XNbW5/rustc_testrunner_tmpdir_reporting.b1NV3CWuBxKo/mvce.rs:4:13
  |
4 |     let mut array = [[0; 0x12345679]; 1];
  |             ^^^^^ help: if this is intentional, prefix it with an underscore: `_array`
  |
  = note: `#[warn(unused_variables)]` on by default

warning: variable does not need to be mutable
 --> /tmp/icemaker_global_tempdir.eFjNhF4XNbW5/rustc_testrunner_tmpdir_reporting.b1NV3CWuBxKo/mvce.rs:4:9
  |
4 |     let mut array = [[0; 0x12345679]; 1];
  |         ----^^^^^
  |         |
  |         help: remove this `mut`
  |
  = note: `#[warn(unused_mut)]` on by default


thread '<unnamed>' panicked at /rust/deps/cranelift-codegen-0.114.0/src/isa/x64/abi.rs:743:68:
called `Result::unwrap()` on an `Err` value: TryFromIntError(())
stack backtrace:
   0:     0x7a23fe0d34ba - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::hc56bb2061e3f2faf
   1:     0x7a23fe8135e6 - core::fmt::write::hf476acdbab1f8242
   2:     0x7a23ff71a311 - std::io::Write::write_fmt::hff3ae507590478c7
   3:     0x7a23fe0d3312 - std::sys::backtrace::BacktraceLock::print::h59430f67692bb429
   4:     0x7a23fe0d58b7 - std::panicking::default_hook::{{closure}}::h85fc82fd35f7c854
   5:     0x7a23fe0d56a0 - std::panicking::default_hook::h149038da7be0a2dc
   6:     0x7a23fd250738 - std[3aac40dc3bd55acb]::panicking::update_hook::<alloc[11ef5de1b489fae0]::boxed::Box<rustc_driver_impl[550e196038d14fc8]::install_ice_hook::{closure#1}>>::{closure#0}
   7:     0x7a23fe0d6103 - std::panicking::rust_panic_with_hook::h91fff69bbdba9796
   8:     0x7a23fe0d5dfa - std::panicking::begin_panic_handler::{{closure}}::hd4b1f7b56f925873
   9:     0x7a23fe0d3989 - std::sys::backtrace::__rust_end_short_backtrace::hd7883fbf49e31f3d
  10:     0x7a23fe0d5abd - rust_begin_unwind
  11:     0x7a23fad9e730 - core::panicking::panic_fmt::h67ab54dd60b05f99
  12:     0x7a23fb1fd5f6 - core::result::unwrap_failed::h353552c90ac0676e
  13:     0x7a23ef81c93b - <cranelift_codegen[bd234fa8b941f2]::isa::x64::abi::X64ABIMachineSpec as cranelift_codegen[bd234fa8b941f2]::machinst::abi::ABIMachineSpec>::gen_clobber_save
  14:     0x7a23ef7a497b - <cranelift_codegen[bd234fa8b941f2]::machinst::vcode::VCode<cranelift_codegen[bd234fa8b941f2]::isa::x64::lower::isle::generated_code::MInst>>::emit
  15:     0x7a23ef849a1b - <cranelift_codegen[bd234fa8b941f2]::isa::x64::X64Backend as cranelift_codegen[bd234fa8b941f2]::isa::TargetIsa>::compile_function
  16:     0x7a23ef8cc705 - <cranelift_codegen[bd234fa8b941f2]::context::Context>::compile_stencil
  17:     0x7a23ef8cd040 - <cranelift_codegen[bd234fa8b941f2]::context::Context>::compile
  18:     0x7a23ef695e31 - <cranelift_object[c43bbcd72abb143b]::backend::ObjectModule as cranelift_module[512baebcd4621a44]::module::Module>::define_function_with_control_plane
  19:     0x7a23ef65872e - rustc_codegen_cranelift[bb5c3dc512b2c6bb]::driver::aot::module_codegen::{closure#0}
  20:     0x7a23ef5ebb99 - std[3aac40dc3bd55acb]::sys::backtrace::__rust_begin_short_backtrace::<rustc_codegen_cranelift[bb5c3dc512b2c6bb]::driver::aot::module_codegen::{closure#0}, core[b46bc0d640c29f3e]::result::Result<rustc_codegen_cranelift[bb5c3dc512b2c6bb]::driver::aot::ModuleCodegenResult, alloc[11ef5de1b489fae0]::string::String>>
  21:     0x7a23ef5f5633 - <<std[3aac40dc3bd55acb]::thread::Builder>::spawn_unchecked_<rustc_codegen_cranelift[bb5c3dc512b2c6bb]::driver::aot::module_codegen::{closure#0}, core[b46bc0d640c29f3e]::result::Result<rustc_codegen_cranelift[bb5c3dc512b2c6bb]::driver::aot::ModuleCodegenResult, alloc[11ef5de1b489fae0]::string::String>>::{closure#1} as core[b46bc0d640c29f3e]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  22:     0x7a23ff615aef - std::sys::pal::unix::thread::Thread::new::thread_start::h9fd3085ff298f095
  23:     0x7a23f9aa339d - <unknown>
  24:     0x7a23f9b2849c - <unknown>
  25:                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.86.0-nightly (1891c2866 2025-01-04) running on x86_64-unknown-linux-gnu

note: compiler flags: -Z codegen-backend=cranelift --crate-type lib -Z dump-mir-dir=dir

query stack during panic:
end of query stack
warning: 2 warnings emitted


Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the ICE with the minimized a.rs example and the shown -Zcodegen-backend=cranelift command. Then inspect src/isa/x64/abi.rs around line 743 and the gen_clobber_save entry point; done means this input compiles without the TryFromIntError panic.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
compilers
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.