rust-lang / rust

Empowering everyone to build reliable and efficient software.
https://www.rust-lang.org
Other
97.32k stars 12.58k forks source link

ICE: `not implemented: f16_f128` #122587

Closed matthiaskrgr closed 2 months ago

matthiaskrgr commented 6 months ago

Code

//@ run-pass
#![allow(unused)]
#![feature(f128)]
#![feature(f16)]

// Same as the feature gate tests but ensure we can use the types
mod check_f128 {
    const A: f128 = 10.0;

    pub fn foo() {
        let a: f128 = 100.0;
        let b = 0.0f128;
        bar(1.23);
    }

    fn bar(a: f128) {}

    struct Bar {
        a: f128,
    }
}

mod check_f16 {
    const A: f16 = 10.0;

    pub fn foo() {
        let a: f16 = 100.0;
        let b = 0.0f16;
        bar(1.23);
    }

    fn bar(a: f16) {}

    struct Bar {
        a: f16,
    }
}

fn main() {
    check_f128::foo();
    check_f16::foo();
}

Meta

rustc --version --verbose:

rustc 1.78.0-nightly (c563f2ee7 2024-03-16)
binary: rustc
commit-hash: c563f2ee799b285067124b516ce99f26063f8351
commit-date: 2024-03-16
host: x86_64-unknown-linux-gnu
release: 1.78.0-nightly
LLVM version: 18.1.0

probably from https://github.com/rust-lang/rust/pull/121926

Error output

clippy-driver ./tests/ui/resolve/primitive-usage.rs

<output>
Backtrace

``` not implemented: f16_f128 stack backtrace: 0: 0x7f006f963912 - std::backtrace_rs::backtrace::libunwind::trace::hfb67e397a2d79bf6 at /rustc/c563f2ee799b285067124b516ce99f26063f8351/library/std/src/../../backtrace/src/backtrace/libunwind.rs:105:5 1: 0x7f006f963912 - std::backtrace_rs::backtrace::trace_unsynchronized::hb900027543c0664d at /rustc/c563f2ee799b285067124b516ce99f26063f8351/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5 2: 0x7f006f963912 - std::sys_common::backtrace::_print_fmt::hd3a7bd10b2dbb7a2 at /rustc/c563f2ee799b285067124b516ce99f26063f8351/library/std/src/sys_common/backtrace.rs:68:5 3: 0x7f006f963912 - ::fmt::he85321ead13b54e2 at /rustc/c563f2ee799b285067124b516ce99f26063f8351/library/std/src/sys_common/backtrace.rs:44:22 4: 0x7f006f9b4c8c - core::fmt::rt::Argument::fmt::h0bc0fca72ec6160d at /rustc/c563f2ee799b285067124b516ce99f26063f8351/library/core/src/fmt/rt.rs:142:9 5: 0x7f006f9b4c8c - core::fmt::write::ha791bec9376ee18e at /rustc/c563f2ee799b285067124b516ce99f26063f8351/library/core/src/fmt/mod.rs:1153:17 6: 0x7f006f95880f - std::io::Write::write_fmt::h042ac5ef2add44b5 at /rustc/c563f2ee799b285067124b516ce99f26063f8351/library/std/src/io/mod.rs:1843:15 7: 0x7f006f9636e4 - std::sys_common::backtrace::_print::h398ade190e58a268 at /rustc/c563f2ee799b285067124b516ce99f26063f8351/library/std/src/sys_common/backtrace.rs:47:5 8: 0x7f006f9636e4 - std::sys_common::backtrace::print::h4965889839a0e456 at /rustc/c563f2ee799b285067124b516ce99f26063f8351/library/std/src/sys_common/backtrace.rs:34:9 9: 0x7f006f9663eb - std::panicking::default_hook::{{closure}}::h03c5a9b57e29c8bd 10: 0x7f006f966143 - std::panicking::default_hook::haa39de978c4d4cb4 at /rustc/c563f2ee799b285067124b516ce99f26063f8351/library/std/src/panicking.rs:292:9 11: 0x7f006c5b39ee - std[4af49b999d7e887a]::panicking::update_hook::>::{closure#0} 12: 0x7f006f966b50 - as core::ops::function::Fn>::call::h3cb59727ca48257b at /rustc/c563f2ee799b285067124b516ce99f26063f8351/library/alloc/src/boxed.rs:2034:9 13: 0x7f006f966b50 - std::panicking::rust_panic_with_hook::h06a630682bf4c8f9 at /rustc/c563f2ee799b285067124b516ce99f26063f8351/library/std/src/panicking.rs:783:13 14: 0x7f006f966859 - std::panicking::begin_panic_handler::{{closure}}::hd7f55e85f3df5a5e at /rustc/c563f2ee799b285067124b516ce99f26063f8351/library/std/src/panicking.rs:649:13 15: 0x7f006f963de6 - std::sys_common::backtrace::__rust_end_short_backtrace::h4b313dbb2e47ec89 at /rustc/c563f2ee799b285067124b516ce99f26063f8351/library/std/src/sys_common/backtrace.rs:171:18 16: 0x7f006f9665c4 - rust_begin_unwind at /rustc/c563f2ee799b285067124b516ce99f26063f8351/library/std/src/panicking.rs:645:5 17: 0x7f006f9b11a5 - core::panicking::panic_fmt::hbd38fdaf62d88af9 at /rustc/c563f2ee799b285067124b516ce99f26063f8351/library/core/src/panicking.rs:72:14 18: 0x563ce62b0dec - ::check_expr 19: 0x7f006c944f82 - as rustc_hir[8460a15472185f08]::intravisit::Visitor>::visit_expr::{closure#0} 20: 0x7f006c944e18 - as rustc_hir[8460a15472185f08]::intravisit::Visitor>::visit_expr 21: 0x7f006c944d18 - as rustc_hir[8460a15472185f08]::intravisit::Visitor>::visit_nested_body 22: 0x7f006c934392 - as rustc_hir[8460a15472185f08]::intravisit::Visitor>::visit_nested_item 23: 0x7f006c933352 - as rustc_hir[8460a15472185f08]::intravisit::Visitor>::visit_nested_item 24: 0x7f006e1cc372 - rustc_lint[8ec0a3d643a79773]::late::check_crate::{closure#0} 25: 0x7f006e1cc5b3 - rustc_lint[8ec0a3d643a79773]::late::check_crate 26: 0x7f006e1af1f5 - rustc_interface[baa36353ef4d859f]::passes::analysis 27: 0x7f006e1ae7e5 - rustc_query_impl[1d92c28ac94b67d9]::plumbing::__rust_begin_short_backtrace::> 28: 0x7f006e6006e5 - rustc_query_system[19a76085ae3c9fe1]::query::plumbing::try_execute_query::>, false, false, false>, rustc_query_impl[1d92c28ac94b67d9]::plumbing::QueryCtxt, false> 29: 0x7f006e600449 - rustc_query_impl[1d92c28ac94b67d9]::query_impl::analysis::get_query_non_incr::__rust_end_short_backtrace 30: 0x7f006e367084 - rustc_interface[baa36353ef4d859f]::interface::run_compiler::, rustc_driver_impl[38d4561b07f32730]::run_compiler::{closure#0}>::{closure#0} 31: 0x7f006e8538c5 - std[4af49b999d7e887a]::sys_common::backtrace::__rust_begin_short_backtrace::, rustc_driver_impl[38d4561b07f32730]::run_compiler::{closure#0}>::{closure#0}, core[7265e5c29e97a4f9]::result::Result<(), rustc_span[98fd467b3f5fb84]::ErrorGuaranteed>>::{closure#0}, core[7265e5c29e97a4f9]::result::Result<(), rustc_span[98fd467b3f5fb84]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[7265e5c29e97a4f9]::result::Result<(), rustc_span[98fd467b3f5fb84]::ErrorGuaranteed>> 32: 0x7f006e8536f2 - <::spawn_unchecked_, rustc_driver_impl[38d4561b07f32730]::run_compiler::{closure#0}>::{closure#0}, core[7265e5c29e97a4f9]::result::Result<(), rustc_span[98fd467b3f5fb84]::ErrorGuaranteed>>::{closure#0}, core[7265e5c29e97a4f9]::result::Result<(), rustc_span[98fd467b3f5fb84]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[7265e5c29e97a4f9]::result::Result<(), rustc_span[98fd467b3f5fb84]::ErrorGuaranteed>>::{closure#1} as core[7265e5c29e97a4f9]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0} 33: 0x7f006f9701e5 - as core::ops::function::FnOnce>::call_once::h1dc87ff82f4c2d61 at /rustc/c563f2ee799b285067124b516ce99f26063f8351/library/alloc/src/boxed.rs:2020:9 34: 0x7f006f9701e5 - as core::ops::function::FnOnce>::call_once::h10dfae22642aac72 at /rustc/c563f2ee799b285067124b516ce99f26063f8351/library/alloc/src/boxed.rs:2020:9 35: 0x7f006f9701e5 - std::sys::pal::unix::thread::Thread::new::thread_start::hfe0706a963f1853a at /rustc/c563f2ee799b285067124b516ce99f26063f8351/library/std/src/sys/pal/unix/thread.rs:108:17 36: 0x7f0069294ac3 - start_thread at ./nptl/pthread_create.c:442:8 37: 0x7f0069326850 - __GI___clone3 at ./misc/../sysdeps/unix/sysv/linux/x86_64/clone3.S:81 38: 0x0 - error: the compiler unexpectedly panicked. this is a bug. note: we would appreciate a bug report: https://github.com/rust-lang/rust-clippy/issues/new?template=ice.yml note: please attach the file at `/home/gh-matthiaskrgr/vcs/github/rust_icemaker/rustc-ice-2024-03-16T09_08_43-265551.txt` to your bug report query stack during panic: #0 [analysis] running analysis passes on this crate end of query stack note: Clippy version: clippy 0.1.78 (c563f2e 2024-03-16) ```

Noratrieb commented 6 months ago

that's expected, the float types are still being added and will panic, please don't fuzz them yet.

matthiaskrgr commented 6 months ago

the file is from the rustc repo, have you not read the ticket?

Noratrieb commented 6 months ago

Yes, the file tests that float name resolution works. A lot of areas, including clippy, are stubbed out with todo!() for now, so it's expected that clippy would die on such a file.

matthiaskrgr commented 6 months ago

mvce:

const b: f16 = 0.0f16;
pub fn main() {
   let b = 0.0f16;
}
Noratrieb commented 6 months ago

With the current way feature gating works, it's inevitable that it will lead to these kinds of problems. it might make sense to make feature gating fatal. either way I don't think this has a particularly high priority

apiraino commented 6 months ago

WG-prioritization assigning priority (Zulip discussion).

@rustbot label -I-prioritize +P-low

tgross35 commented 6 months ago

Yeah, I will be updating Clippy after I have some slightly improved libs support

@rustbot claim

tgross35 commented 6 months ago

Feel free to ping / assign me on any f16/f128 issues btw

Noratrieb commented 6 months ago

As an org member, I think you should be able to configure notifications for this repo so that you get notified whenever someone applies the F label.

tgross35 commented 6 months ago

Thanks, I had no clue that was a thing. Awesome.

(looks like you don't even need to be an org member to do this, just tried with something else)

matthiaskrgr commented 6 months ago

@tgross35 this still crashes with latest master and rustc and clippy :/

thread 'rustc' panicked at compiler/rustc_mir_build/src/thir/pattern/const_to_pat.rs:445:41: not implemented: f16_f128 stack backtrace:

tgross35 commented 6 months ago

Hmm which line does it say it's panicking at? I am running with

./x build --stage 1 src/tools/clippy/
LD_LIBRARY_PATH=$(realpath build/x86_64-unknown-linux-gnu/stage1/lib/rustlib/x86_64-unknown-linux-gnu/lib/) build/x86_64-unknown-linux-gnu/stage1/bin/clippy-driver ./tests/ui/resolve/primitive-usage.rs

That seems to work fine, not sure if there is a less clunky way to build and run clippy in-tree

matthiaskrgr commented 6 months ago

ooh lol its actually cranelift that panics :sweat_smile: (rustc with -Zcodegen-backend=..)

auto-reduced (treereduce-rust):

#![feature(f128)]

mod check_f128 {

    pub fn foo() {
        bar(1.23);
    }

    fn bar(a: f128) {}
}

fn main() {
    check_f128::foo();
}

original:

//@ run-pass
#![allow(unused)]
#![feature(f128)]
#![feature(f16)]

// Same as the feature gate tests but ensure we can use the types
mod check_f128 {
    const A: f128 = 10.0;

    pub fn foo() {
        let a: f128 = 100.0;
        let b = 0.0f128;
        bar(1.23);
    }

    fn bar(a: f128) {}

    struct Bar {
        a: f128,
    }
}

mod check_f16 {
    const A: f16 = 10.0;

    pub fn foo() {
        let a: f16 = 100.0;
        let b = 0.0f16;
        bar(1.23);
    }

    fn bar(a: f16) {}

    struct Bar {
        a: f16,
    }
}

fn main() {
    check_f128::foo();
    check_f16::foo();
}

Version information

rustc 1.79.0-nightly (d5db7fb53 2024-03-27)
binary: rustc
commit-hash: d5db7fb537c0352eec3855aa0331c271c48ac4f6
commit-date: 2024-03-27
host: x86_64-unknown-linux-gnu
release: 1.79.0-nightly
LLVM version: 18.1.2

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

Program output

``` warning: unused variable: `a` --> /tmp/icemaker_global_tempdir.OmcLOi9VfQDq/rustc_testrunner_tmpdir_reporting.vA7SUKAHHWs0/mvce.rs:9:12 | 9 | fn bar(a: f128) {} | ^ help: if this is intentional, prefix it with an underscore: `_a` | = note: `#[warn(unused_variables)]` on by default thread 'rustc' panicked at src/common.rs:39:28: not implemented: f16_f128 stack backtrace: 0: 0x7a9596889235 - std::backtrace_rs::backtrace::libunwind::trace::h35c05b60de86c082 at /rustc/d5db7fb537c0352eec3855aa0331c271c48ac4f6/library/std/src/../../backtrace/src/backtrace/libunwind.rs:105:5 1: 0x7a9596889235 - std::backtrace_rs::backtrace::trace_unsynchronized::h716cc93b6616466b at /rustc/d5db7fb537c0352eec3855aa0331c271c48ac4f6/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5 2: 0x7a9596889235 - std::sys_common::backtrace::_print_fmt::h2eafab78e5405086 at /rustc/d5db7fb537c0352eec3855aa0331c271c48ac4f6/library/std/src/sys_common/backtrace.rs:68:5 3: 0x7a9596889235 - ::fmt::h782eb93aef6bbfdc at /rustc/d5db7fb537c0352eec3855aa0331c271c48ac4f6/library/std/src/sys_common/backtrace.rs:44:22 4: 0x7a95968da3fb - core::fmt::rt::Argument::fmt::h423c1825313972bd at /rustc/d5db7fb537c0352eec3855aa0331c271c48ac4f6/library/core/src/fmt/rt.rs:142:9 5: 0x7a95968da3fb - core::fmt::write::h8bf0eb0713660507 at /rustc/d5db7fb537c0352eec3855aa0331c271c48ac4f6/library/core/src/fmt/mod.rs:1153:17 6: 0x7a959687de4f - std::io::Write::write_fmt::h1869b88304121496 at /rustc/d5db7fb537c0352eec3855aa0331c271c48ac4f6/library/std/src/io/mod.rs:1843:15 7: 0x7a959688900e - std::sys_common::backtrace::_print::h3f71a60e8eec22db at /rustc/d5db7fb537c0352eec3855aa0331c271c48ac4f6/library/std/src/sys_common/backtrace.rs:47:5 8: 0x7a959688900e - std::sys_common::backtrace::print::hbc0f4a4435261b96 at /rustc/d5db7fb537c0352eec3855aa0331c271c48ac4f6/library/std/src/sys_common/backtrace.rs:34:9 9: 0x7a959688bc89 - std::panicking::default_hook::{{closure}}::hcb90344a23466037 10: 0x7a959688b9f3 - std::panicking::default_hook::h4e7402b852825f26 at /rustc/d5db7fb537c0352eec3855aa0331c271c48ac4f6/library/std/src/panicking.rs:292:9 11: 0x7a95931f7eee - std[ee38f4c3e7db4cb4]::panicking::update_hook::>::{closure#0} 12: 0x7a959688c38c - as core::ops::function::Fn>::call::h41b4c40829d8b80c at /rustc/d5db7fb537c0352eec3855aa0331c271c48ac4f6/library/alloc/src/boxed.rs:2032:9 13: 0x7a959688c38c - std::panicking::rust_panic_with_hook::h34319b28877d2524 at /rustc/d5db7fb537c0352eec3855aa0331c271c48ac4f6/library/std/src/panicking.rs:793:13 14: 0x7a959688c0fd - std::panicking::begin_panic_handler::{{closure}}::h0eb0df2dd2d8dc83 at /rustc/d5db7fb537c0352eec3855aa0331c271c48ac4f6/library/std/src/panicking.rs:650:13 15: 0x7a95968896f9 - std::sys_common::backtrace::__rust_end_short_backtrace::h78e6ce0174ef8f2f at /rustc/d5db7fb537c0352eec3855aa0331c271c48ac4f6/library/std/src/sys_common/backtrace.rs:171:18 16: 0x7a959688be67 - rust_begin_unwind at /rustc/d5db7fb537c0352eec3855aa0331c271c48ac4f6/library/std/src/panicking.rs:646:5 17: 0x7a95968d6896 - core::panicking::panic_fmt::hb9147ccf68681889 at /rustc/d5db7fb537c0352eec3855aa0331c271c48ac4f6/library/core/src/panicking.rs:72:14 18: 0x7a9586214623 - rustc_codegen_cranelift[21db139c38c04a89]::common::scalar_to_clif_type 19: 0x7a95861fd524 - as rustc_codegen_cranelift[21db139c38c04a89]::abi::pass_mode::ArgAbiExt>::get_abi_param 20: 0x7a95861f4254 - , core[852c89a24d64efc7]::iter::adapters::flatten::FlatMap>, smallvec[b3b3083dd8b0b482]::IntoIter<[cranelift_codegen[b503ea5cf0af30c5]::ir::extfunc::AbiParam; 2usize]>, rustc_codegen_cranelift[21db139c38c04a89]::abi::clif_sig_from_fn_abi::{closure#0}>> as core[852c89a24d64efc7]::iter::traits::iterator::Iterator>::next 21: 0x7a95861ffc59 - rustc_codegen_cranelift[21db139c38c04a89]::abi::clif_sig_from_fn_abi 22: 0x7a95862228c6 - rustc_codegen_cranelift[21db139c38c04a89]::driver::aot::module_codegen::{closure#0} 23: 0x7a95862212f7 - rustc_codegen_cranelift[21db139c38c04a89]::driver::aot::module_codegen 24: 0x7a958622d6bc - rustc_codegen_cranelift[21db139c38c04a89]::driver::aot::run_aot 25: 0x7a958625c0c1 - ::codegen_crate 26: 0x7a959549411f - rustc_interface[8a3ca12de370bc6d]::passes::start_codegen 27: 0x7a95954938bd - ::codegen_and_build_linker 28: 0x7a95952872eb - rustc_interface[8a3ca12de370bc6d]::interface::run_compiler::, rustc_driver_impl[b62da54691605f75]::run_compiler::{closure#0}>::{closure#0} 29: 0x7a95953665e3 - std[ee38f4c3e7db4cb4]::sys_common::backtrace::__rust_begin_short_backtrace::, rustc_driver_impl[b62da54691605f75]::run_compiler::{closure#0}>::{closure#0}, core[852c89a24d64efc7]::result::Result<(), rustc_span[b9a3f8dff5ad8c72]::ErrorGuaranteed>>::{closure#0}, core[852c89a24d64efc7]::result::Result<(), rustc_span[b9a3f8dff5ad8c72]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[852c89a24d64efc7]::result::Result<(), rustc_span[b9a3f8dff5ad8c72]::ErrorGuaranteed>> 30: 0x7a9595366410 - <::spawn_unchecked_, rustc_driver_impl[b62da54691605f75]::run_compiler::{closure#0}>::{closure#0}, core[852c89a24d64efc7]::result::Result<(), rustc_span[b9a3f8dff5ad8c72]::ErrorGuaranteed>>::{closure#0}, core[852c89a24d64efc7]::result::Result<(), rustc_span[b9a3f8dff5ad8c72]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[852c89a24d64efc7]::result::Result<(), rustc_span[b9a3f8dff5ad8c72]::ErrorGuaranteed>>::{closure#1} as core[852c89a24d64efc7]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0} 31: 0x7a9596895ca9 - as core::ops::function::FnOnce>::call_once::hc7f4be48b61584a0 at /rustc/d5db7fb537c0352eec3855aa0331c271c48ac4f6/library/alloc/src/boxed.rs:2018:9 32: 0x7a9596895ca9 - as core::ops::function::FnOnce>::call_once::h98f2eb6153ee7231 at /rustc/d5db7fb537c0352eec3855aa0331c271c48ac4f6/library/alloc/src/boxed.rs:2018:9 33: 0x7a9596895ca9 - std::sys::pal::unix::thread::Thread::new::thread_start::h5b05a8117b189654 at /rustc/d5db7fb537c0352eec3855aa0331c271c48ac4f6/library/std/src/sys/pal/unix/thread.rs:108:17 34: 0x7a95900a955a - 35: 0x7a9590126a3c - 36: 0x0 - 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: rustc 1.79.0-nightly (d5db7fb53 2024-03-27) running on x86_64-unknown-linux-gnu note: compiler flags: -Z codegen-backend=cranelift -Z dump-mir-dir=dir query stack during panic: end of query stack warning: 1 warning emitted ```

matthiaskrgr commented 5 months ago

also fun fact: I found this code from 2014 which also panics again :sweat_smile:

#![feature(quad_precision_float)]

static x: f128 = 1.0 + 2.0;

fn foo(a: f128) -> f128 { a }

pub fn main() {
    let y = x;
    foo(y);
}
tgross35 commented 5 months ago

I don't even think the old gate is needed for that (though funny that it exists). Unfortunately anything that can get const evaled will ICE until I can update that portion of the code, which can't happen until we have arithmetic working on all platforms, which won't work until I have compiler_builtins updated, which is a huge pain that I am currently working on... Dependencies 😆

tgross35 commented 3 months ago

@matthiaskrgr is there anything in tree testing this? https://github.com/rust-lang/rust/pull/126636 should fix it but I don't see anything to update if it exists

tgross35 commented 3 months ago

The above checks fine since https://github.com/rust-lang/rust/pull/126636 but I forgot the Fixes tag, could somebody close this?

matthiaskrgr commented 3 months ago

@tgross35

//@ revisions: e2015 e2018
//
//@[e2018] edition:2018

#![allow(unused)]

const b: f16 = 10.0; //~ ERROR the type `f16` is unstable

pub fn main() {
    let a: f16 = 100.0; //~ ERROR the type `f16` is unstable
    let b = 0.0f16; //~ ERROR the type `f16` is unstable
    foo(1.23);
}

fn foo(a: f16) {} //~ ERROR the type `f16` is unstable

struct Bar {
    a: f16, //~ ERROR the type `f16` is unstable
}
tgross35 commented 3 months ago

Ah, that last ICE point should be covered by https://github.com/rust-lang/rust/pull/123088. Is there something edition-specific?

matthiaskrgr commented 3 months ago

minimized with auto-generated report:

auto-reduced (treereduce-rust):


const b: f16 = 10.0;

pub fn main() {
    let b = 0.0f16;
    foo(1.23);
}

fn foo(a: f16) {}

original:

//@ revisions: e2015 e2018
//
//@[e2018] edition:2018

#![allow(unused)]

const b: f16 = 10.0; //~ ERROR the type `f16` is unstable

pub fn main() {
    let a: f16 = 100.0; //~ ERROR the type `f16` is unstable
    let b = 0.0f16; //~ ERROR the type `f16` is unstable
    foo(1.23);
}

fn foo(a: f16) {} //~ ERROR the type `f16` is unstable

struct Bar {
    a: f16, //~ ERROR the type `f16` is unstable
}

Version information

rustc 1.81.0-nightly (7a08f8462 2024-06-21)
binary: rustc
commit-hash: 7a08f84627ff3035de4d66ff3209e5fc93165dcb
commit-date: 2024-06-21
host: x86_64-unknown-linux-gnu
release: 1.81.0-nightly
LLVM version: 18.1.7

Command: /home/matthias/.rustup/toolchains/master/bin/rustc

Program output

``` error[E0658]: the type `f16` is unstable --> /tmp/icemaker_global_tempdir.OrU0ZATgnOnE/rustc_testrunner_tmpdir_reporting.COrE24FNzM7e/mvce.rs:3:10 | 3 | const b: f16 = 10.0; | ^^^ | = note: see issue #116909 for more information = help: add `#![feature(f16)]` to the crate attributes to enable = note: this compiler was built on 2024-06-21; consider upgrading it if it is out of date error[E0658]: the type `f16` is unstable --> /tmp/icemaker_global_tempdir.OrU0ZATgnOnE/rustc_testrunner_tmpdir_reporting.COrE24FNzM7e/mvce.rs:10:11 | 10 | fn foo(a: f16) {} | ^^^ | = note: see issue #116909 for more information = help: add `#![feature(f16)]` to the crate attributes to enable = note: this compiler was built on 2024-06-21; consider upgrading it if it is out of date error[E0658]: the type `f16` is unstable --> /tmp/icemaker_global_tempdir.OrU0ZATgnOnE/rustc_testrunner_tmpdir_reporting.COrE24FNzM7e/mvce.rs:6:13 | 6 | let b = 0.0f16; | ^^^^^^ | = note: see issue #116909 for more information = help: add `#![feature(f16)]` to the crate attributes to enable = note: this compiler was built on 2024-06-21; consider upgrading it if it is out of date thread 'rustc' panicked at compiler/rustc_mir_build/src/thir/pattern/const_to_pat.rs:372:41: not implemented: f16_f128 stack backtrace: 0: 0x7f45e94e0125 - std::backtrace_rs::backtrace::libunwind::trace::h9e1143c4e8814665 at /rustc/7a08f84627ff3035de4d66ff3209e5fc93165dcb/library/std/src/../../backtrace/src/backtrace/libunwind.rs:116:5 1: 0x7f45e94e0125 - std::backtrace_rs::backtrace::trace_unsynchronized::hb17bc278e78560b7 at /rustc/7a08f84627ff3035de4d66ff3209e5fc93165dcb/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5 2: 0x7f45e94e0125 - std::sys::backtrace::_print_fmt::h4e16a804d4b72d53 at /rustc/7a08f84627ff3035de4d66ff3209e5fc93165dcb/library/std/src/sys/backtrace.rs:68:5 3: 0x7f45e94e0125 - ::fmt::h51c8a417deba034f at /rustc/7a08f84627ff3035de4d66ff3209e5fc93165dcb/library/std/src/sys/backtrace.rs:44:22 4: 0x7f45e952fabb - core::fmt::rt::Argument::fmt::h9e6273a38f90b346 at /rustc/7a08f84627ff3035de4d66ff3209e5fc93165dcb/library/core/src/fmt/rt.rs:165:63 5: 0x7f45e952fabb - core::fmt::write::hf6893e6e0de45566 at /rustc/7a08f84627ff3035de4d66ff3209e5fc93165dcb/library/core/src/fmt/mod.rs:1168:21 6: 0x7f45e94d4dbf - std::io::Write::write_fmt::h939622d51aaa7841 at /rustc/7a08f84627ff3035de4d66ff3209e5fc93165dcb/library/std/src/io/mod.rs:1835:15 7: 0x7f45e94dfefe - std::sys::backtrace::_print::h41aa84b32d700697 at /rustc/7a08f84627ff3035de4d66ff3209e5fc93165dcb/library/std/src/sys/backtrace.rs:47:5 8: 0x7f45e94dfefe - std::sys::backtrace::print::h121fd5e3d688a475 at /rustc/7a08f84627ff3035de4d66ff3209e5fc93165dcb/library/std/src/sys/backtrace.rs:34:9 9: 0x7f45e94e2939 - std::panicking::default_hook::{{closure}}::hc22a77172f8c8931 10: 0x7f45e94e26dc - std::panicking::default_hook::hd8d9aec7eb6a0fc3 at /rustc/7a08f84627ff3035de4d66ff3209e5fc93165dcb/library/std/src/panicking.rs:292:9 11: 0x7f45e59ff260 - std[3295baff09c0d5bb]::panicking::update_hook::>::{closure#0} 12: 0x7f45e94e320f - as core::ops::function::Fn>::call::h35d67e64a0b3c43b at /rustc/7a08f84627ff3035de4d66ff3209e5fc93165dcb/library/alloc/src/boxed.rs:2076:9 13: 0x7f45e94e320f - std::panicking::rust_panic_with_hook::h086bae967523d34e at /rustc/7a08f84627ff3035de4d66ff3209e5fc93165dcb/library/std/src/panicking.rs:804:13 14: 0x7f45e94e2e03 - std::panicking::begin_panic_handler::{{closure}}::hfeac2910cd533be9 at /rustc/7a08f84627ff3035de4d66ff3209e5fc93165dcb/library/std/src/panicking.rs:663:13 15: 0x7f45e94e05e9 - std::sys::backtrace::__rust_end_short_backtrace::h717a4b25b81802d4 at /rustc/7a08f84627ff3035de4d66ff3209e5fc93165dcb/library/std/src/sys/backtrace.rs:171:18 16: 0x7f45e94e2b14 - rust_begin_unwind at /rustc/7a08f84627ff3035de4d66ff3209e5fc93165dcb/library/std/src/panicking.rs:661:5 17: 0x7f45e952c073 - core::panicking::panic_fmt::h51c9ea6079c2a1f6 at /rustc/7a08f84627ff3035de4d66ff3209e5fc93165dcb/library/core/src/panicking.rs:74:14 18: 0x7f45e7808767 - ::recur 19: 0x7f45e7806dce - ::const_to_pat 20: 0x7f45e780cc72 - ::lower_path 21: 0x7f45e7809bc0 - ::lower_pattern 22: 0x7f45e780f097 - ::mirror_stmts::{closure#0} 23: 0x7f45e7811d3d - ::mirror_expr 24: 0x7f45e736df9a - rustc_mir_build[52246727d5d8c4e9]::thir::cx::thir_body 25: 0x7f45e736d996 - rustc_query_impl[b1aaa56dbebc295e]::plumbing::__rust_begin_short_backtrace::> 26: 0x7f45e75f68d7 - rustc_query_system[748b288d756e32e1]::query::plumbing::try_execute_query::>, false, false, false>, rustc_query_impl[b1aaa56dbebc295e]::plumbing::QueryCtxt, false> 27: 0x7f45e75f6528 - rustc_query_impl[b1aaa56dbebc295e]::query_impl::thir_body::get_query_non_incr::__rust_end_short_backtrace 28: 0x7f45e7321194 - rustc_mir_build[52246727d5d8c4e9]::check_unsafety::check_unsafety 29: 0x7f45e7320feb - rustc_query_impl[b1aaa56dbebc295e]::plumbing::__rust_begin_short_backtrace::> 30: 0x7f45e7320197 - rustc_query_system[748b288d756e32e1]::query::plumbing::try_execute_query::>, false, false, false>, rustc_query_impl[b1aaa56dbebc295e]::plumbing::QueryCtxt, false> 31: 0x7f45e731fddb - rustc_query_impl[b1aaa56dbebc295e]::query_impl::check_unsafety::get_query_non_incr::__rust_end_short_backtrace 32: 0x7f45e7324eac - rustc_interface[776f974ef9e2f82a]::passes::analysis 33: 0x7f45e7323f95 - rustc_query_impl[b1aaa56dbebc295e]::plumbing::__rust_begin_short_backtrace::> 34: 0x7f45e7e1ea25 - rustc_query_system[748b288d756e32e1]::query::plumbing::try_execute_query::>, false, false, false>, rustc_query_impl[b1aaa56dbebc295e]::plumbing::QueryCtxt, false> 35: 0x7f45e7e1e78f - rustc_query_impl[b1aaa56dbebc295e]::query_impl::analysis::get_query_non_incr::__rust_end_short_backtrace 36: 0x7f45e7d1089b - rustc_interface[776f974ef9e2f82a]::interface::run_compiler::, rustc_driver_impl[95dae7b6d33859ab]::run_compiler::{closure#0}>::{closure#1} 37: 0x7f45e7cae489 - std[3295baff09c0d5bb]::sys::backtrace::__rust_begin_short_backtrace::, rustc_driver_impl[95dae7b6d33859ab]::run_compiler::{closure#0}>::{closure#1}, core[da71afae28a7f9d6]::result::Result<(), rustc_span[6aa011f1c2e52b2d]::ErrorGuaranteed>>::{closure#0}, core[da71afae28a7f9d6]::result::Result<(), rustc_span[6aa011f1c2e52b2d]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[da71afae28a7f9d6]::result::Result<(), rustc_span[6aa011f1c2e52b2d]::ErrorGuaranteed>> 38: 0x7f45e7cae23a - <::spawn_unchecked_, rustc_driver_impl[95dae7b6d33859ab]::run_compiler::{closure#0}>::{closure#1}, core[da71afae28a7f9d6]::result::Result<(), rustc_span[6aa011f1c2e52b2d]::ErrorGuaranteed>>::{closure#0}, core[da71afae28a7f9d6]::result::Result<(), rustc_span[6aa011f1c2e52b2d]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[da71afae28a7f9d6]::result::Result<(), rustc_span[6aa011f1c2e52b2d]::ErrorGuaranteed>>::{closure#2} as core[da71afae28a7f9d6]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0} 39: 0x7f45e94ecf7b - as core::ops::function::FnOnce>::call_once::h1fb027f994355977 at /rustc/7a08f84627ff3035de4d66ff3209e5fc93165dcb/library/alloc/src/boxed.rs:2062:9 40: 0x7f45e94ecf7b - as core::ops::function::FnOnce>::call_once::hc8362453264a063b at /rustc/7a08f84627ff3035de4d66ff3209e5fc93165dcb/library/alloc/src/boxed.rs:2062:9 41: 0x7f45e94ecf7b - std::sys::pal::unix::thread::Thread::new::thread_start::h961cc5e79f30aa83 at /rustc/7a08f84627ff3035de4d66ff3209e5fc93165dcb/library/std/src/sys/pal/unix/thread.rs:108:17 42: 0x7f45e9282ded - 43: 0x7f45e93060dc - 44: 0x0 - 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.81.0-nightly (7a08f8462 2024-06-21) running on x86_64-unknown-linux-gnu query stack during panic: #0 [thir_body] building THIR for `main` #1 [check_unsafety] unsafety-checking `main` end of query stack warning: unused variable: `a` --> /tmp/icemaker_global_tempdir.OrU0ZATgnOnE/rustc_testrunner_tmpdir_reporting.COrE24FNzM7e/mvce.rs:10:8 | 10 | fn foo(a: f16) {} | ^ help: if this is intentional, prefix it with an underscore: `_a` | = note: `#[warn(unused_variables)]` on by default error: aborting due to 3 previous errors; 1 warning emitted For more information about this error, try `rustc --explain E0658`. ```

matthiaskrgr commented 3 months ago

does not seem to be edition dependant.

tgross35 commented 3 months ago

@matthiaskrgr no more 🧊 in the latest nightly, a previously-panicking test was included in https://github.com/rust-lang/rust/blob/fda509e817abeeecb5b76bc1de844f355675c81e/tests/ui/consts/const_in_pattern/f16-f128-const-reassign.rs.

Could we close this broad-ish issue and just open new ones if new ICEs pop up? (There are some unimplemented!s floating around in const casting and math still, but hopefully gone in the next few weeks)

matthiaskrgr commented 3 months ago

Cranelift still has problems, but I dunno if you want to tackle this :sweat_smile: thread 'rustc' panicked at src/common.rs:67:29: 'not implemented: f16_f128''

tgross35 commented 3 months ago

Yeah, lower priority :) https://github.com/rust-lang/rustc_codegen_cranelift/issues/1461 is tracking that one. cg_gcc has the issue too but that one is fixed in the rustc_codegen_gcc repo, just waiting on a sync.

tgross35 commented 2 months ago

Going to close this since the obvious codepaths have been taken care of, anything less obvious is probably better off in its own issue.