Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ICE: assertion failed: base.layout.ty.is_simd() #94382

Closed
matthiaskrgr opened this issue Feb 25, 2022 · 8 comments
Closed

ICE: assertion failed: base.layout.ty.is_simd() #94382

matthiaskrgr opened this issue Feb 25, 2022 · 8 comments
Labels
C-bug Category: This is a bug. glacier ICE tracked in rust-lang/glacier. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Comments

@matthiaskrgr
Copy link
Member

Code

#![feature(platform_intrinsics)]
#![feature(staged_api)]
struct u16x2(u16, u16);
extern "platform-intrinsic" {
    #[rustc_const_stable(feature = "foo", since = "1.3.37")]
    fn simd_extract<T, U>(x: T, idx: u32) -> U;
}
fn main() {
    const U: u16x2 = u16x2(13, 14);
    const V: u16x2 = U;
    const Y0: i8 = unsafe { simd_extract(V, 0) };
}

Meta

rustc --version --verbose:

rustc 1.61.0-nightly (4b043faba 2022-02-24)
binary: rustc
commit-hash: 4b043faba34ccc053a4d0110634c323f6c03765e
commit-date: 2022-02-24
host: x86_64-unknown-linux-gnu
release: 1.61.0-nightly
LLVM version: 14.0.0

Error output

warning: type `u16x2` should have an upper camel case name
 --> ./10640.rs:3:8
  |
3 | struct u16x2(u16, u16);
  |        ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `U16x2`
  |
  = note: `#[warn(non_camel_case_types)]` on by default

warning: struct is never constructed: `u16x2`
 --> ./10640.rs:3:8
  |
3 | struct u16x2(u16, u16);
  |        ^^^^^
  |
  = note: `#[warn(dead_code)]` on by default

warning: function is never used: `simd_extract`
 --> ./10640.rs:6:5
  |
6 |     fn simd_extract<T, U>(x: T, idx: u32) -> U;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: constant is never used: `U`
 --> ./10640.rs:9:5
  |
9 |     const U: u16x2 = u16x2(13, 14);
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: constant is never used: `V`
  --> ./10640.rs:10:5
   |
10 |     const V: u16x2 = U;
   |     ^^^^^^^^^^^^^^^^^^^

warning: constant is never used: `Y0`
  --> ./10640.rs:11:5
   |
11 |     const Y0: i8 = unsafe { simd_extract(V, 0) };
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: module has missing stability attribute
  --> ./10640.rs:1:1
   |
1  | / #![feature(platform_intrinsics)]
2  | | #![feature(staged_api)]
3  | | struct u16x2(u16, u16);
4  | | extern "platform-intrinsic" {
...  |
11 | |     const Y0: i8 = unsafe { simd_extract(V, 0) };
12 | | }
   | |_^

thread 'rustc' panicked at 'assertion failed: base.layout.ty.is_simd()', compiler/rustc_const_eval/src/interpret/operand.rs:447:9
stack backtrace:
Backtrace

warning: type `u16x2` should have an upper camel case name
 --> ./10640.rs:3:8
  |
3 | struct u16x2(u16, u16);
  |        ^^^^^ help: convert the identifier to upper camel case (notice the capitalization): `U16x2`
  |
  = note: `#[warn(non_camel_case_types)]` on by default

warning: struct is never constructed: `u16x2`
 --> ./10640.rs:3:8
  |
3 | struct u16x2(u16, u16);
  |        ^^^^^
  |
  = note: `#[warn(dead_code)]` on by default

warning: function is never used: `simd_extract`
 --> ./10640.rs:6:5
  |
6 |     fn simd_extract<T, U>(x: T, idx: u32) -> U;
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: constant is never used: `U`
 --> ./10640.rs:9:5
  |
9 |     const U: u16x2 = u16x2(13, 14);
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

warning: constant is never used: `V`
  --> ./10640.rs:10:5
   |
10 |     const V: u16x2 = U;
   |     ^^^^^^^^^^^^^^^^^^^

warning: constant is never used: `Y0`
  --> ./10640.rs:11:5
   |
11 |     const Y0: i8 = unsafe { simd_extract(V, 0) };
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

error: module has missing stability attribute
  --> ./10640.rs:1:1
   |
1  | / #![feature(platform_intrinsics)]
2  | | #![feature(staged_api)]
3  | | struct u16x2(u16, u16);
4  | | extern "platform-intrinsic" {
...  |
11 | |     const Y0: i8 = unsafe { simd_extract(V, 0) };
12 | | }
   | |_^

thread 'rustc' panicked at 'assertion failed: base.layout.ty.is_simd()', compiler/rustc_const_eval/src/interpret/operand.rs:447:9
stack backtrace:
   0:     0x7f8dad54ed4c - std::backtrace_rs::backtrace::libunwind::trace::h853a1389f6e5e745
                               at /rustc/4b043faba34ccc053a4d0110634c323f6c03765e/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
   1:     0x7f8dad54ed4c - std::backtrace_rs::backtrace::trace_unsynchronized::h141fba7f3343285a
                               at /rustc/4b043faba34ccc053a4d0110634c323f6c03765e/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x7f8dad54ed4c - std::sys_common::backtrace::_print_fmt::h3413d0b0d4b31c4c
                               at /rustc/4b043faba34ccc053a4d0110634c323f6c03765e/library/std/src/sys_common/backtrace.rs:66:5
   3:     0x7f8dad54ed4c - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::hbc867a15ccd0341f
                               at /rustc/4b043faba34ccc053a4d0110634c323f6c03765e/library/std/src/sys_common/backtrace.rs:45:22
   4:     0x7f8dad5ae9fc - core::fmt::write::h35157148513e92bc
                               at /rustc/4b043faba34ccc053a4d0110634c323f6c03765e/library/core/src/fmt/mod.rs:1190:17
   5:     0x7f8dad53ee78 - std::io::Write::write_fmt::hc5517132c5cecddc
                               at /rustc/4b043faba34ccc053a4d0110634c323f6c03765e/library/std/src/io/mod.rs:1657:15
   6:     0x7f8dad552d27 - std::sys_common::backtrace::_print::hc5f683d445b22529
                               at /rustc/4b043faba34ccc053a4d0110634c323f6c03765e/library/std/src/sys_common/backtrace.rs:48:5
   7:     0x7f8dad552d27 - std::sys_common::backtrace::print::hd841ed3190824cc9
                               at /rustc/4b043faba34ccc053a4d0110634c323f6c03765e/library/std/src/sys_common/backtrace.rs:35:9
   8:     0x7f8dad552d27 - std::panicking::default_hook::{{closure}}::h9a0c56b9dbc35012
                               at /rustc/4b043faba34ccc053a4d0110634c323f6c03765e/library/std/src/panicking.rs:295:22
   9:     0x7f8dad5529df - std::panicking::default_hook::hc46807a97c7de333
                               at /rustc/4b043faba34ccc053a4d0110634c323f6c03765e/library/std/src/panicking.rs:314:9
  10:     0x7f8dadce40d1 - rustc_driver[442ed871d20551d1]::DEFAULT_HOOK::{closure#0}::{closure#0}
  11:     0x7f8dad5535f6 - std::panicking::rust_panic_with_hook::h1ad2fcf54bcf9bb5
                               at /rustc/4b043faba34ccc053a4d0110634c323f6c03765e/library/std/src/panicking.rs:702:17
  12:     0x7f8dad553269 - std::panicking::begin_panic_handler::{{closure}}::hf8003c262b110425
                               at /rustc/4b043faba34ccc053a4d0110634c323f6c03765e/library/std/src/panicking.rs:586:13
  13:     0x7f8dad54f214 - std::sys_common::backtrace::__rust_end_short_backtrace::hba6e0d383beff798
                               at /rustc/4b043faba34ccc053a4d0110634c323f6c03765e/library/std/src/sys_common/backtrace.rs:138:18
  14:     0x7f8dad552fb9 - rust_begin_unwind
                               at /rustc/4b043faba34ccc053a4d0110634c323f6c03765e/library/std/src/panicking.rs:584:5
  15:     0x7f8dad51b943 - core::panicking::panic_fmt::h949e0ccd2ca80abd
                               at /rustc/4b043faba34ccc053a4d0110634c323f6c03765e/library/core/src/panicking.rs:142:14
  16:     0x7f8dad51b80d - core::panicking::panic::hb9b31f2682d3a5c9
                               at /rustc/4b043faba34ccc053a4d0110634c323f6c03765e/library/core/src/panicking.rs:48:5
  17:     0x7f8dae4373af - <rustc_const_eval[2597fefd2201b516]::interpret::eval_context::InterpCx<rustc_const_eval[2597fefd2201b516]::const_eval::machine::CompileTimeInterpreter>>::operand_to_simd
  18:     0x7f8dae42bd36 - <rustc_const_eval[2597fefd2201b516]::interpret::eval_context::InterpCx<rustc_const_eval[2597fefd2201b516]::const_eval::machine::CompileTimeInterpreter>>::emulate_intrinsic
  19:     0x7f8dae4a43dd - <rustc_const_eval[2597fefd2201b516]::const_eval::machine::CompileTimeInterpreter as rustc_const_eval[2597fefd2201b516]::interpret::machine::Machine>::call_intrinsic
  20:     0x7f8daf4c2c9d - <rustc_const_eval[2597fefd2201b516]::interpret::eval_context::InterpCx<rustc_const_eval[2597fefd2201b516]::const_eval::machine::CompileTimeInterpreter>>::eval_fn_call
  21:     0x7f8daf462adc - <rustc_const_eval[2597fefd2201b516]::interpret::eval_context::InterpCx<rustc_const_eval[2597fefd2201b516]::const_eval::machine::CompileTimeInterpreter>>::run
  22:     0x7f8daf517199 - rustc_const_eval[2597fefd2201b516]::const_eval::eval_queries::eval_to_allocation_raw_provider
  23:     0x7f8daf53fbe3 - rustc_query_system[1880d9bd090da1b9]::query::plumbing::try_execute_query::<rustc_query_impl[3c87bff9477a19b0]::plumbing::QueryCtxt, rustc_query_system[1880d9bd090da1b9]::query::caches::DefaultCache<rustc_middle[cef953e2dc6653d0]::ty::ParamEnvAnd<rustc_middle[cef953e2dc6653d0]::mir::interpret::GlobalId>, core[a2af605994515733]::result::Result<rustc_middle[cef953e2dc6653d0]::mir::interpret::value::ConstAlloc, rustc_middle[cef953e2dc6653d0]::mir::interpret::error::ErrorHandled>>>
  24:     0x7f8daf5adddf - <rustc_query_impl[3c87bff9477a19b0]::Queries as rustc_middle[cef953e2dc6653d0]::ty::query::QueryEngine>::eval_to_allocation_raw
  25:     0x7f8daf515cd7 - rustc_const_eval[2597fefd2201b516]::const_eval::eval_queries::eval_to_const_value_raw_provider
  26:     0x7f8daf540d24 - rustc_query_system[1880d9bd090da1b9]::query::plumbing::try_execute_query::<rustc_query_impl[3c87bff9477a19b0]::plumbing::QueryCtxt, rustc_query_system[1880d9bd090da1b9]::query::caches::DefaultCache<rustc_middle[cef953e2dc6653d0]::ty::ParamEnvAnd<rustc_middle[cef953e2dc6653d0]::mir::interpret::GlobalId>, core[a2af605994515733]::result::Result<rustc_middle[cef953e2dc6653d0]::mir::interpret::value::ConstValue, rustc_middle[cef953e2dc6653d0]::mir::interpret::error::ErrorHandled>>>
  27:     0x7f8daf5adf9b - <rustc_query_impl[3c87bff9477a19b0]::Queries as rustc_middle[cef953e2dc6653d0]::ty::query::QueryEngine>::eval_to_const_value_raw
  28:     0x7f8daf515a51 - rustc_const_eval[2597fefd2201b516]::const_eval::eval_queries::eval_to_const_value_raw_provider
  29:     0x7f8daf540d24 - rustc_query_system[1880d9bd090da1b9]::query::plumbing::try_execute_query::<rustc_query_impl[3c87bff9477a19b0]::plumbing::QueryCtxt, rustc_query_system[1880d9bd090da1b9]::query::caches::DefaultCache<rustc_middle[cef953e2dc6653d0]::ty::ParamEnvAnd<rustc_middle[cef953e2dc6653d0]::mir::interpret::GlobalId>, core[a2af605994515733]::result::Result<rustc_middle[cef953e2dc6653d0]::mir::interpret::value::ConstValue, rustc_middle[cef953e2dc6653d0]::mir::interpret::error::ErrorHandled>>>
  30:     0x7f8daf5adf9b - <rustc_query_impl[3c87bff9477a19b0]::Queries as rustc_middle[cef953e2dc6653d0]::ty::query::QueryEngine>::eval_to_const_value_raw
  31:     0x7f8daf9ce987 - <rustc_middle[cef953e2dc6653d0]::ty::context::TyCtxt>::const_eval_global_id
  32:     0x7f8db0329109 - <rustc_middle[cef953e2dc6653d0]::ty::context::TyCtxt>::const_eval_poly
  33:     0x7f8daf7f1adf - <rustc_lint[c065da05e1957203]::BuiltinCombinedLateLintPass as rustc_lint[c065da05e1957203]::passes::LateLintPass>::check_item
  34:     0x7f8daee9a598 - <rustc_lint[c065da05e1957203]::late::LateContextAndPass<rustc_lint[c065da05e1957203]::BuiltinCombinedLateLintPass> as rustc_hir[5f50d7fdb7b24348]::intravisit::Visitor>::visit_nested_item
  35:     0x7f8daee9bd32 - <rustc_lint[c065da05e1957203]::late::LateContextAndPass<rustc_lint[c065da05e1957203]::BuiltinCombinedLateLintPass> as rustc_hir[5f50d7fdb7b24348]::intravisit::Visitor>::visit_expr
  36:     0x7f8daee9af04 - <rustc_lint[c065da05e1957203]::late::LateContextAndPass<rustc_lint[c065da05e1957203]::BuiltinCombinedLateLintPass> as rustc_hir[5f50d7fdb7b24348]::intravisit::Visitor>::visit_nested_body
  37:     0x7f8daee9c70d - rustc_hir[5f50d7fdb7b24348]::intravisit::walk_item::<rustc_lint[c065da05e1957203]::late::LateContextAndPass<rustc_lint[c065da05e1957203]::BuiltinCombinedLateLintPass>>
  38:     0x7f8daee9a5a3 - <rustc_lint[c065da05e1957203]::late::LateContextAndPass<rustc_lint[c065da05e1957203]::BuiltinCombinedLateLintPass> as rustc_hir[5f50d7fdb7b24348]::intravisit::Visitor>::visit_nested_item
  39:     0x7f8dafaf8c67 - rustc_lint[c065da05e1957203]::late::late_lint_crate::<rustc_lint[c065da05e1957203]::BuiltinCombinedLateLintPass>
  40:     0x7f8dafb26e1b - <rustc_session[94f6c5c92635dd6]::session::Session>::time::<(), rustc_lint[c065da05e1957203]::late::check_crate<rustc_lint[c065da05e1957203]::BuiltinCombinedLateLintPass, rustc_interface[65caae14b4217ef3]::passes::analysis::{closure#5}::{closure#0}::{closure#3}::{closure#0}::{closure#0}>::{closure#0}::{closure#0}>
  41:     0x7f8dafb29e96 - <core[a2af605994515733]::panic::unwind_safe::AssertUnwindSafe<rustc_interface[65caae14b4217ef3]::passes::analysis::{closure#5}::{closure#0}::{closure#3}> as core[a2af605994515733]::ops::function::FnOnce<()>>::call_once
  42:     0x7f8dafb2c151 - <core[a2af605994515733]::panic::unwind_safe::AssertUnwindSafe<rustc_interface[65caae14b4217ef3]::passes::analysis::{closure#5}::{closure#0}> as core[a2af605994515733]::ops::function::FnOnce<()>>::call_once
  43:     0x7f8dafb287c8 - <rustc_session[94f6c5c92635dd6]::session::Session>::time::<(), rustc_interface[65caae14b4217ef3]::passes::analysis::{closure#5}>
  44:     0x7f8dafb0ddac - rustc_interface[65caae14b4217ef3]::passes::analysis
  45:     0x7f8daffc198b - rustc_query_system[1880d9bd090da1b9]::query::plumbing::try_execute_query::<rustc_query_impl[3c87bff9477a19b0]::plumbing::QueryCtxt, rustc_query_system[1880d9bd090da1b9]::query::caches::DefaultCache<(), core[a2af605994515733]::result::Result<(), rustc_errors[1b480dc045645b1a]::ErrorReported>>>
  46:     0x7f8db0003845 - rustc_query_system[1880d9bd090da1b9]::query::plumbing::get_query::<rustc_query_impl[3c87bff9477a19b0]::queries::analysis, rustc_query_impl[3c87bff9477a19b0]::plumbing::QueryCtxt>
  47:     0x7f8dafaebd38 - <rustc_interface[65caae14b4217ef3]::passes::QueryContext>::enter::<rustc_driver[442ed871d20551d1]::run_compiler::{closure#1}::{closure#2}::{closure#3}, core[a2af605994515733]::result::Result<(), rustc_errors[1b480dc045645b1a]::ErrorReported>>
  48:     0x7f8dafadafaa - <rustc_interface[65caae14b4217ef3]::interface::Compiler>::enter::<rustc_driver[442ed871d20551d1]::run_compiler::{closure#1}::{closure#2}, core[a2af605994515733]::result::Result<core[a2af605994515733]::option::Option<rustc_interface[65caae14b4217ef3]::queries::Linker>, rustc_errors[1b480dc045645b1a]::ErrorReported>>
  49:     0x7f8dafadd196 - rustc_span[cac29f2f15677c0e]::with_source_map::<core[a2af605994515733]::result::Result<(), rustc_errors[1b480dc045645b1a]::ErrorReported>, rustc_interface[65caae14b4217ef3]::interface::create_compiler_and_run<core[a2af605994515733]::result::Result<(), rustc_errors[1b480dc045645b1a]::ErrorReported>, rustc_driver[442ed871d20551d1]::run_compiler::{closure#1}>::{closure#1}>
  50:     0x7f8dafada9b1 - rustc_interface[65caae14b4217ef3]::interface::create_compiler_and_run::<core[a2af605994515733]::result::Result<(), rustc_errors[1b480dc045645b1a]::ErrorReported>, rustc_driver[442ed871d20551d1]::run_compiler::{closure#1}>
  51:     0x7f8dafac6372 - <scoped_tls[876471c7b20f8e0c]::ScopedKey<rustc_span[cac29f2f15677c0e]::SessionGlobals>>::set::<rustc_interface[65caae14b4217ef3]::interface::run_compiler<core[a2af605994515733]::result::Result<(), rustc_errors[1b480dc045645b1a]::ErrorReported>, rustc_driver[442ed871d20551d1]::run_compiler::{closure#1}>::{closure#0}, core[a2af605994515733]::result::Result<(), rustc_errors[1b480dc045645b1a]::ErrorReported>>
  52:     0x7f8dafac5c2d - std[2a6da251afaa3124]::sys_common::backtrace::__rust_begin_short_backtrace::<rustc_interface[65caae14b4217ef3]::util::run_in_thread_pool_with_globals<rustc_interface[65caae14b4217ef3]::interface::run_compiler<core[a2af605994515733]::result::Result<(), rustc_errors[1b480dc045645b1a]::ErrorReported>, rustc_driver[442ed871d20551d1]::run_compiler::{closure#1}>::{closure#0}, core[a2af605994515733]::result::Result<(), rustc_errors[1b480dc045645b1a]::ErrorReported>>::{closure#0}, core[a2af605994515733]::result::Result<(), rustc_errors[1b480dc045645b1a]::ErrorReported>>
  53:     0x7f8dafac4419 - <<std[2a6da251afaa3124]::thread::Builder>::spawn_unchecked_<rustc_interface[65caae14b4217ef3]::util::run_in_thread_pool_with_globals<rustc_interface[65caae14b4217ef3]::interface::run_compiler<core[a2af605994515733]::result::Result<(), rustc_errors[1b480dc045645b1a]::ErrorReported>, rustc_driver[442ed871d20551d1]::run_compiler::{closure#1}>::{closure#0}, core[a2af605994515733]::result::Result<(), rustc_errors[1b480dc045645b1a]::ErrorReported>>::{closure#0}, core[a2af605994515733]::result::Result<(), rustc_errors[1b480dc045645b1a]::ErrorReported>>::{closure#1} as core[a2af605994515733]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  54:     0x7f8dad55f183 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::hbda7b2dd6cb05b7b
                               at /rustc/4b043faba34ccc053a4d0110634c323f6c03765e/library/alloc/src/boxed.rs:1854:9
  55:     0x7f8dad55f183 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h4e7c4e55f1ee6074
                               at /rustc/4b043faba34ccc053a4d0110634c323f6c03765e/library/alloc/src/boxed.rs:1854:9
  56:     0x7f8dad55f183 - std::sys::unix::thread::Thread::new::thread_start::h272cda2d6cad9954
                               at /rustc/4b043faba34ccc053a4d0110634c323f6c03765e/library/std/src/sys/unix/thread.rs:108:17
  57:     0x7f8dad464259 - start_thread
  58:     0x7f8dad3805e3 - __GI___clone
  59:                0x0 - <unknown>

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/issues/new?labels=C-bug%2C+I-ICE%2C+T-compiler&template=ice.md

note: rustc 1.61.0-nightly (4b043faba 2022-02-24) running on x86_64-unknown-linux-gnu

query stack during panic:
#0 [eval_to_allocation_raw] const-evaluating + checking `main::Y0`
#1 [eval_to_const_value_raw] simplifying constant for the type system `main::Y0`
#2 [eval_to_const_value_raw] simplifying constant for the type system `main::Y0`
#3 [analysis] running analysis passes on this crate
end of query stack
error: aborting due to previous error; 6 warnings emitted

@matthiaskrgr matthiaskrgr added I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. C-bug Category: This is a bug. labels Feb 25, 2022
@rust-lang-glacier-bot rust-lang-glacier-bot added the glacier ICE tracked in rust-lang/glacier. label Feb 26, 2022
@RalfJung
Copy link
Member

RalfJung commented Mar 2, 2022

FWIW, we typically do not consider ICEs due to incorrectly used intrinsics as bugs. That is an infinite rabbit hole and it's not worth it, given that intrinsics will never be stabilized.

That said, if it helps people working on the standard library, and if having a nicer error is easy to do without extra maintenance overhead, PRs emitting nicer errors are still usually accepted.

@matthiaskrgr I wonder in which situation you encountered this problem?

@matthiaskrgr
Copy link
Member Author

I was playing around and generating rust code using markov chains and filtering out the compiler crashes 😁
So probably not with fixing them.. ^^

@oli-obk
Copy link
Contributor

oli-obk commented Mar 2, 2022

Yea, if your generated code, contains feature gates like platform_intrinsics, intrinsics or no_core, you will run into lots of ICEs, but few of them actionable. I recommend explicitly rejecting programs with such feature gates.

That said, we should totally talk. I want to start generating some random programs, too, but instead of finding crashes I want to find UB in safe code.

@oli-obk oli-obk closed this as completed Mar 2, 2022
@RalfJung
Copy link
Member

RalfJung commented Mar 2, 2022

To be fair, the ICE error message explicitly tells people to report these as bugs, so we shouldn't be surprised about reports like this. ;)

@matthiaskrgr
Copy link
Member Author

Note; while rustc rejects the code with an error

// build-fail

#![feature(platform_intrinsics)]

extern "platform-intrinsic" {
    fn simd_add<T>(a: T, b: T) -> T;
}

fn main() {
    unsafe { simd_add(0, 1); } //~ ERROR E0511
}

miri will also show the ICE:

WARNING: Ignoring `RUSTC_WRAPPER` environment variable, Miri does not support wrapping.
    Finished dev [unoptimized + debuginfo] target(s) in 0.03s
     Running `/home/matthias/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/cargo-miri target/miri/x86_64-unknown-linux-gnu/debug/miri`
thread 'rustc' panicked at 'assertion failed: base.layout.ty.is_simd()', /rustc/6dd68402c5d7da168f87d8551dd9aed1d8a21893/compiler/rustc_const_eval/src/interpret/operand.rs:500:9

@oli-obk
Copy link
Contributor

oli-obk commented May 14, 2022

To be fair, the ICE error message explicitly tells people to report these as bugs, so we shouldn't be surprised about reports like this. ;)

We could hide the issue comment if no_core is enabled

@matthiaskrgr
Copy link
Member Author

Oh this makes me wonder if it would be worthwhile to have something like
Rustc unexpectedly crashed.... BUT this crash is already known, see ticket #1234 for details
to avoid duplicate tickets for known bugs 🤔

@RalfJung
Copy link
Member

Yeah, rustc cares a bit more about giving nice errors than Miri does. They have more people working on this, too. ;)

But we shouldn't duplicate all that error logic from rustc, instead we should move it to some place where it works regardless of the codegen backend.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-bug Category: This is a bug. glacier ICE tracked in rust-lang/glacier. I-ICE Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️ T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

No branches or pull requests

4 participants