Skip to content

ICE in librustc/middle/const_eval.rs #30216

Closed
@ia0

Description

@ia0

The compiler unexpectedly panicked.

I was working on a crate when cargo build gave an ICE. I tried to reduce the code and command-line.

Content of ice.rs:

fn div_ceil(x: usize, m: usize) -> usize { (x + m - 1) / m }
fn f1(x: &[u8], n: usize, i: usize) {}
fn f2(x: &[u8], n: usize, i: usize) {}
fn f3<B: Foo>(x: &B) {}
fn f4<B: Foo>(x: &B) { unreachable!() }
fn f5<B: Foo>(_: &B) -> usize { 0 }
pub trait Foo {}
pub fn entry<F: Foo>(x: &F) -> u64 { 0u64 << f5(x) }
fn main() {}

rustc --version --verbose:

rustc 1.6.0-nightly (abfadfeee 2015-12-02)
binary: rustc
commit-hash: abfadfeee691f832b3b47ebd334ec119b0a8379d
commit-date: 2015-12-02
host: x86_64-unknown-linux-gnu
release: 1.6.0-nightly

RUST_BACKTRACE=1 rustc ice.rs:

ice.rs:1:1: 1:61 warning: function is never used: `div_ceil`, #[warn(dead_code)] on by default
ice.rs:1 fn div_ceil(x: usize, m: usize) -> usize { (x + m - 1) / m }
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ice.rs:2:1: 2:39 warning: function is never used: `f1`, #[warn(dead_code)] on by default
ice.rs:2 fn f1(x: &[u8], n: usize, i: usize) {}
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ice.rs:2:7: 2:8 warning: unused variable: `x`, #[warn(unused_variables)] on by default
ice.rs:2 fn f1(x: &[u8], n: usize, i: usize) {}
               ^
ice.rs:2:17: 2:18 warning: unused variable: `n`, #[warn(unused_variables)] on by default
ice.rs:2 fn f1(x: &[u8], n: usize, i: usize) {}
                         ^
ice.rs:2:27: 2:28 warning: unused variable: `i`, #[warn(unused_variables)] on by default
ice.rs:2 fn f1(x: &[u8], n: usize, i: usize) {}
                                   ^
ice.rs:3:1: 3:39 warning: function is never used: `f2`, #[warn(dead_code)] on by default
ice.rs:3 fn f2(x: &[u8], n: usize, i: usize) {}
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ice.rs:3:7: 3:8 warning: unused variable: `x`, #[warn(unused_variables)] on by default
ice.rs:3 fn f2(x: &[u8], n: usize, i: usize) {}
               ^
ice.rs:3:17: 3:18 warning: unused variable: `n`, #[warn(unused_variables)] on by default
ice.rs:3 fn f2(x: &[u8], n: usize, i: usize) {}
                         ^
ice.rs:3:27: 3:28 warning: unused variable: `i`, #[warn(unused_variables)] on by default
ice.rs:3 fn f2(x: &[u8], n: usize, i: usize) {}
                                   ^
ice.rs:4:1: 4:24 warning: function is never used: `f3`, #[warn(dead_code)] on by default
ice.rs:4 fn f3<B: Foo>(x: &B) {}
         ^~~~~~~~~~~~~~~~~~~~~~~
ice.rs:4:15: 4:16 warning: unused variable: `x`, #[warn(unused_variables)] on by default
ice.rs:4 fn f3<B: Foo>(x: &B) {}
                       ^
ice.rs:5:1: 5:40 warning: function is never used: `f4`, #[warn(dead_code)] on by default
ice.rs:5 fn f4<B: Foo>(x: &B) { unreachable!() }
         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ice.rs:5:15: 5:16 warning: unused variable: `x`, #[warn(unused_variables)] on by default
ice.rs:5 fn f4<B: Foo>(x: &B) { unreachable!() }
                       ^
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/blob/master/CONTRIBUTING.md#bug-reports
thread 'rustc' panicked at 'assertion failed: `(left == right)` (left: `3`, right: `1`)', ../src/librustc/middle/const_eval.rs:1110
stack backtrace:
   1:     0x7f3279f1b1f0 - sys::backtrace::tracing::imp::write::ha5f3f0d9df3eccc0xXt
   2:     0x7f3279f21e75 - panicking::log_panic::_<closure>::closure.41172
   3:     0x7f3279f2190f - panicking::log_panic::hb6d5879621a98ec062x
   4:     0x7f3279eea7f3 - sys_common::unwind::begin_unwind_inner::h56feb86a7746f2474Ps
   5:     0x7f3279eeb158 - sys_common::unwind::begin_unwind_fmt::hbd638ea70768c304aPs
   6:     0x7f327784d3f0 - middle::const_eval::eval_const_expr_partial::h2533bfe6c1962b66I9l
   7:     0x7f32786485f7 - types::_<impl>::check_expr::hfc38773ffed22370aLb
   8:     0x7f3277a3aeef - lint::context::_<impl>::visit_expr::h8b9870a4ad638ad0DRp
   9:     0x7f3277a3b7ab - lint::context::_<impl>::visit_fn::h8832c50f3c478cc15Sp
  10:     0x7f3277a36c5b - lint::context::_<impl>::visit_item::h4cb67b33f26f536fTOp
  11:     0x7f3277a3ba8b - lint::context::_<impl>::visit_mod::h08bcb71d52cb2f19EZp
  12:     0x7f3277a57131 - lint::context::check_crate::h2219a7117ade41ab7Bq
  13:     0x7f327a42396c - driver::phase_3_run_analysis_passes::_<closure>::closure.25592
  14:     0x7f327a402e43 - middle::ty::context::_<impl>::create_and_enter::create_and_enter::h11817769863191690492
  15:     0x7f327a3fe1fb - driver::phase_3_run_analysis_passes::h5750652185230913258
  16:     0x7f327a3d04a9 - driver::compile_input::hc44b9e449347f9a1jca
  17:     0x7f327a3c261b - run_compiler::he3da9dd626b2ff2a0wc
  18:     0x7f327a3bf2d6 - sys_common::unwind::try::try_fn::try_fn::h16654195298631707248
  19:     0x7f3279f18e88 - __rust_try
  20:     0x7f3279f1078b - sys_common::unwind::try::inner_try::hb614b0fa85d9fb24CMs
  21:     0x7f327a3bf630 - boxed::_<impl>::call_box::call_box::h11236117354921040822
  22:     0x7f3279f20393 - sys::thread::_<impl>::new::thread_start::h73d591f2e83d6559I5w
  23:     0x7f32731d0181 - start_thread
  24:     0x7f3279b9e47c - __clone
  25:                0x0 - <unknown>

Metadata

Metadata

Assignees

No one assigned

    Labels

    I-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions