Closed matthiaskrgr closed 2 months ago
that's expected, the float types are still being added and will panic, please don't fuzz them yet.
the file is from the rustc repo, have you not read the ticket?
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.
mvce:
const b: f16 = 0.0f16;
pub fn main() {
let b = 0.0f16;
}
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
WG-prioritization assigning priority (Zulip discussion).
@rustbot label -I-prioritize +P-low
Yeah, I will be updating Clippy after I have some slightly improved libs support
@rustbot claim
Feel free to ping / assign me on any f16/f128 issues btw
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.
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)
@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:
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
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
```
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 -
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);
}
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 😆
@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
The above checks fine since https://github.com/rust-lang/rust/pull/126636 but I forgot the Fixes
tag, could somebody close this?
@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
}
Ah, that last ICE point should be covered by https://github.com/rust-lang/rust/pull/123088. Is there something edition-specific?
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
```
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
does not seem to be edition dependant.
@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)
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''
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.
Going to close this since the obvious codepaths have been taken care of, anything less obvious is probably better off in its own issue.
Code
Meta
rustc --version --verbose
:probably from https://github.com/rust-lang/rust/pull/121926
Error output
clippy-driver ./tests/ui/resolve/primitive-usage.rs
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)
```