Closed as duplicate of#121097
Closed as duplicate of#121097
Description
I tried this code:
#![allow(non_upper_case_globals)]
enum A {
A1,
A2,
}
enum B {
B1 = 4,
B2 = 2,
}
#[repr(simd)]
#[repr(align(8))]
enum Aligned {
Zero = 0,
One = 1,
}
const X: u8 = {
let aligned = Aligned::Zero;
aligned as u8
};
pub fn main() {
static c1: isize = A::A2 as isize;
static c2: isize = B::B2 as isize;
let a1 = A::A2 as isize;
let a2 = B::B2 as isize;
assert_eq!(c1, 1);
assert_eq!(c2, 2);
assert_eq!(a1, 1);
assert_eq!(a2, 2);
static c1_2: isize = {
let v = A::A1;
v as isize
};
static c2_2: isize = {
let v = B::B1;
v as isize
};
let a1_2 = {
let v = A::A1;
v as isize
};
let a2_2 = {
let v = B::B1;
v as isize
};
assert_eq!(c1_2, 0);
assert_eq!(c2_2, 4);
assert_eq!(a1_2, 0);
assert_eq!(a2_2, 4);
assert_eq!(X, 0);
}
It mutates from the following file, but the following code will not cause a ICE.
Also, I used non_upper_case_globals and Aligned as search keywords but didn’t find any related issues with open.
#![allow(non_upper_case_globals)]
enum A {
A1,
A2,
}
enum B {
B1 = 4,
B2 = 2,
}
#[allow(dead_code)]
#[repr(align(8))]
enum Aligned {
Zero = 0,
One = 1,
}
const X: u8 = {
let aligned = Aligned::Zero;
aligned as u8
};
pub fn main() {
static c1: isize = A::A2 as isize;
static c2: isize = B::B2 as isize;
let a1 = A::A2 as isize;
let a2 = B::B2 as isize;
assert_eq!(c1, 1);
assert_eq!(c2, 2);
assert_eq!(a1, 1);
assert_eq!(a2, 2);
static c1_2: isize = {
let v = A::A1;
v as isize
};
static c2_2: isize = {
let v = B::B1;
v as isize
};
let a1_2 = {
let v = A::A1;
v as isize
};
let a2_2 = {
let v = B::B1;
v as isize
};
assert_eq!(c1_2, 0);
assert_eq!(c2_2, 4);
assert_eq!(a1_2, 0);
assert_eq!(a2_2, 4);
assert_eq!(X, 0);
}
Meta
rustc --version --verbose
:
rustc 1.85.0-nightly (acabb5248 2024-12-04)
binary: rustc
commit-hash: acabb5248231987ae1f0c215208d1005a5db402d
commit-date: 2024-12-04
host: x86_64-unknown-linux-gnu
release: 1.85.0-nightly
LLVM version: 19.1.5
Backtrace
error[E0517]: attribute should be applied to a struct
--> mutant.rs:10:8
|
10 | #[repr(simd)]
| ^^^^
11 | #[repr(align(8))]
12 | / enum Aligned {
13 | | Zero = 0,
14 | | One = 1,
15 | | }
| |_- not a struct
thread 'rustc' panicked at compiler/rustc_mir_build/src/build/expr/as_rvalue.rs:215:65:
called `Result::unwrap()` on an `Err` value: Unknown(Aligned)
stack backtrace:
0: 0x7a5617d3c5ba - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h0ab6de9a9b46ba40
1: 0x7a5618413e66 - core::fmt::write::h786572316278241a
2: 0x7a56193d1a51 - std::io::Write::write_fmt::h253c21bff6dc1068
3: 0x7a5617d3c412 - std::sys::backtrace::BacktraceLock::print::h72ad191a9e5c3f0c
4: 0x7a5617d3e93a - std::panicking::default_hook::{{closure}}::h697ead15ac8858f2
5: 0x7a5617d3e783 - std::panicking::default_hook::h36df36946face91c
6: 0x7a5616eb9318 - std[72a4a0de9fece711]::panicking::update_hook::<alloc[272e4c5910fec5b6]::boxed::Box<rustc_driver_impl[e7849dc6dfe13602]::install_ice_hook::{closure#0}>>::{closure#0}
7: 0x7a5617d3f0f8 - std::panicking::rust_panic_with_hook::h66ac57f6f29fdfbd
8: 0x7a5617d3edea - std::panicking::begin_panic_handler::{{closure}}::h44ac1fccfa946230
9: 0x7a5617d3ca79 - std::sys::backtrace::__rust_end_short_backtrace::ha74a12e03dbbea79
10: 0x7a5617d3eaad - rust_begin_unwind
11: 0x7a56149ae100 - core::panicking::panic_fmt::hed29c46432bb0866
12: 0x7a5614e1d7a6 - core::result::unwrap_failed::hcb6218d7fc18794c
13: 0x7a56186b5029 - <rustc_mir_build[6801472b4a87f40a]::build::Builder>::as_rvalue
14: 0x7a56186b792f - <rustc_mir_build[6801472b4a87f40a]::build::Builder>::expr_into_dest
15: 0x7a56186ba9ab - <rustc_mir_build[6801472b4a87f40a]::build::Builder>::expr_into_dest
16: 0x7a56191ddf6b - <rustc_mir_build[6801472b4a87f40a]::build::Builder>::ast_block_stmts
17: 0x7a56191dcb92 - <rustc_mir_build[6801472b4a87f40a]::build::Builder>::ast_block
18: 0x7a56186b8d7b - <rustc_mir_build[6801472b4a87f40a]::build::Builder>::expr_into_dest
19: 0x7a56186ba9ab - <rustc_mir_build[6801472b4a87f40a]::build::Builder>::expr_into_dest
20: 0x7a5618dad85f - rustc_mir_build[6801472b4a87f40a]::build::mir_build
21: 0x7a5618409ec4 - rustc_mir_transform[bea604f73cbae67a]::mir_built
22: 0x7a5618409e87 - rustc_query_impl[e67a967fc473869]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[e67a967fc473869]::query_impl::mir_built::dynamic_query::{closure#2}::{closure#0}, rustc_middle[b3d98edcda7bf203]::query::erase::Erased<[u8; 8usize]>>
23: 0x7a561883f7d1 - rustc_query_system[5b88147768c3e99]::query::plumbing::try_execute_query::<rustc_query_impl[e67a967fc473869]::DynamicConfig<rustc_data_structures[b7c46475613933cb]::vec_cache::VecCache<rustc_span[d12ce1794d211847]::def_id::LocalDefId, rustc_middle[b3d98edcda7bf203]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[5b88147768c3e99]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[e67a967fc473869]::plumbing::QueryCtxt, false>
24: 0x7a561883f38d - rustc_query_impl[e67a967fc473869]::query_impl::mir_built::get_query_non_incr::__rust_end_short_backtrace
25: 0x7a5618dedb0f - rustc_mir_transform[bea604f73cbae67a]::mir_const_qualif
26: 0x7a5618deda25 - rustc_query_impl[e67a967fc473869]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[e67a967fc473869]::query_impl::mir_const_qualif::dynamic_query::{closure#2}::{closure#0}, rustc_middle[b3d98edcda7bf203]::query::erase::Erased<[u8; 4usize]>>
27: 0x7a5618ded077 - rustc_query_system[5b88147768c3e99]::query::plumbing::try_execute_query::<rustc_query_impl[e67a967fc473869]::DynamicConfig<rustc_query_system[5b88147768c3e99]::query::caches::DefIdCache<rustc_middle[b3d98edcda7bf203]::query::erase::Erased<[u8; 4usize]>>, false, false, false>, rustc_query_impl[e67a967fc473869]::plumbing::QueryCtxt, false>
28: 0x7a5618decdf2 - rustc_query_impl[e67a967fc473869]::query_impl::mir_const_qualif::get_query_non_incr::__rust_end_short_backtrace
29: 0x7a561601caf7 - rustc_mir_transform[bea604f73cbae67a]::mir_promoted
30: 0x7a56188a48d2 - rustc_query_impl[e67a967fc473869]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[e67a967fc473869]::query_impl::mir_promoted::dynamic_query::{closure#2}::{closure#0}, rustc_middle[b3d98edcda7bf203]::query::erase::Erased<[u8; 16usize]>>
31: 0x7a56188a4ba6 - rustc_query_system[5b88147768c3e99]::query::plumbing::try_execute_query::<rustc_query_impl[e67a967fc473869]::DynamicConfig<rustc_data_structures[b7c46475613933cb]::vec_cache::VecCache<rustc_span[d12ce1794d211847]::def_id::LocalDefId, rustc_middle[b3d98edcda7bf203]::query::erase::Erased<[u8; 16usize]>, rustc_query_system[5b88147768c3e99]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[e67a967fc473869]::plumbing::QueryCtxt, false>
32: 0x7a56188a47d0 - rustc_query_impl[e67a967fc473869]::query_impl::mir_promoted::get_query_non_incr::__rust_end_short_backtrace
33: 0x7a56195ad8ad - rustc_query_impl[e67a967fc473869]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[e67a967fc473869]::query_impl::mir_borrowck::dynamic_query::{closure#2}::{closure#0}, rustc_middle[b3d98edcda7bf203]::query::erase::Erased<[u8; 8usize]>>
34: 0x7a561883f7d1 - rustc_query_system[5b88147768c3e99]::query::plumbing::try_execute_query::<rustc_query_impl[e67a967fc473869]::DynamicConfig<rustc_data_structures[b7c46475613933cb]::vec_cache::VecCache<rustc_span[d12ce1794d211847]::def_id::LocalDefId, rustc_middle[b3d98edcda7bf203]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[5b88147768c3e99]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[e67a967fc473869]::plumbing::QueryCtxt, false>
35: 0x7a561883f2d5 - rustc_query_impl[e67a967fc473869]::query_impl::mir_borrowck::get_query_non_incr::__rust_end_short_backtrace
36: 0x7a5615c6cf40 - rustc_mir_transform[bea604f73cbae67a]::mir_drops_elaborated_and_const_checked
37: 0x7a561883f479 - rustc_query_impl[e67a967fc473869]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[e67a967fc473869]::query_impl::mir_drops_elaborated_and_const_checked::dynamic_query::{closure#2}::{closure#0}, rustc_middle[b3d98edcda7bf203]::query::erase::Erased<[u8; 8usize]>>
38: 0x7a561883f7d1 - rustc_query_system[5b88147768c3e99]::query::plumbing::try_execute_query::<rustc_query_impl[e67a967fc473869]::DynamicConfig<rustc_data_structures[b7c46475613933cb]::vec_cache::VecCache<rustc_span[d12ce1794d211847]::def_id::LocalDefId, rustc_middle[b3d98edcda7bf203]::query::erase::Erased<[u8; 8usize]>, rustc_query_system[5b88147768c3e99]::dep_graph::graph::DepNodeIndex>, false, false, false>, rustc_query_impl[e67a967fc473869]::plumbing::QueryCtxt, false>
39: 0x7a561883f227 - rustc_query_impl[e67a967fc473869]::query_impl::mir_drops_elaborated_and_const_checked::get_query_non_incr::__rust_end_short_backtrace
40: 0x7a5618e12273 - rustc_mir_transform[bea604f73cbae67a]::mir_for_ctfe
41: 0x7a5618e12127 - rustc_query_impl[e67a967fc473869]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[e67a967fc473869]::query_impl::mir_for_ctfe::dynamic_query::{closure#2}::{closure#0}, rustc_middle[b3d98edcda7bf203]::query::erase::Erased<[u8; 8usize]>>
42: 0x7a56184405c8 - rustc_query_system[5b88147768c3e99]::query::plumbing::try_execute_query::<rustc_query_impl[e67a967fc473869]::DynamicConfig<rustc_query_system[5b88147768c3e99]::query::caches::DefIdCache<rustc_middle[b3d98edcda7bf203]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[e67a967fc473869]::plumbing::QueryCtxt, false>
43: 0x7a5619026fe3 - rustc_query_impl[e67a967fc473869]::query_impl::mir_for_ctfe::get_query_non_incr::__rust_end_short_backtrace
44: 0x7a5619027128 - <rustc_const_eval[98aee9191cce85ba]::interpret::eval_context::InterpCx<rustc_const_eval[98aee9191cce85ba]::const_eval::machine::CompileTimeMachine>>::load_mir
45: 0x7a5619027e41 - rustc_const_eval[98aee9191cce85ba]::const_eval::eval_queries::eval_to_allocation_raw_provider
46: 0x7a5619027bbe - rustc_query_impl[e67a967fc473869]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[e67a967fc473869]::query_impl::eval_to_allocation_raw::dynamic_query::{closure#2}::{closure#0}, rustc_middle[b3d98edcda7bf203]::query::erase::Erased<[u8; 24usize]>>
47: 0x7a5618ffea62 - rustc_query_system[5b88147768c3e99]::query::plumbing::try_execute_query::<rustc_query_impl[e67a967fc473869]::DynamicConfig<rustc_query_system[5b88147768c3e99]::query::caches::DefaultCache<rustc_middle[b3d98edcda7bf203]::ty::PseudoCanonicalInput<rustc_middle[b3d98edcda7bf203]::mir::interpret::GlobalId>, rustc_middle[b3d98edcda7bf203]::query::erase::Erased<[u8; 24usize]>>, false, false, false>, rustc_query_impl[e67a967fc473869]::plumbing::QueryCtxt, false>
48: 0x7a5618ffe5c1 - rustc_query_impl[e67a967fc473869]::query_impl::eval_to_allocation_raw::get_query_non_incr::__rust_end_short_backtrace
49: 0x7a5619000737 - rustc_const_eval[98aee9191cce85ba]::const_eval::eval_queries::eval_to_const_value_raw_provider
50: 0x7a5619000540 - rustc_query_impl[e67a967fc473869]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[e67a967fc473869]::query_impl::eval_to_const_value_raw::dynamic_query::{closure#2}::{closure#0}, rustc_middle[b3d98edcda7bf203]::query::erase::Erased<[u8; 24usize]>>
51: 0x7a5618ffea19 - rustc_query_system[5b88147768c3e99]::query::plumbing::try_execute_query::<rustc_query_impl[e67a967fc473869]::DynamicConfig<rustc_query_system[5b88147768c3e99]::query::caches::DefaultCache<rustc_middle[b3d98edcda7bf203]::ty::PseudoCanonicalInput<rustc_middle[b3d98edcda7bf203]::mir::interpret::GlobalId>, rustc_middle[b3d98edcda7bf203]::query::erase::Erased<[u8; 24usize]>>, false, false, false>, rustc_query_impl[e67a967fc473869]::plumbing::QueryCtxt, false>
52: 0x7a5618ffe4c9 - rustc_query_impl[e67a967fc473869]::query_impl::eval_to_const_value_raw::get_query_non_incr::__rust_end_short_backtrace
53: 0x7a561883ed94 - <rustc_middle[b3d98edcda7bf203]::hir::map::Map>::par_body_owners::<rustc_hir_analysis[55059ff4ac40f9b9]::check_crate::{closure#3}>::{closure#0}
54: 0x7a561883c777 - rustc_hir_analysis[55059ff4ac40f9b9]::check_crate
55: 0x7a5618847284 - rustc_interface[196843e09e80f515]::passes::run_required_analyses
56: 0x7a56193c1e9e - rustc_interface[196843e09e80f515]::passes::analysis
57: 0x7a56193c1e6f - rustc_query_impl[e67a967fc473869]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[e67a967fc473869]::query_impl::analysis::dynamic_query::{closure#2}::{closure#0}, rustc_middle[b3d98edcda7bf203]::query::erase::Erased<[u8; 1usize]>>
58: 0x7a5619388efa - rustc_query_system[5b88147768c3e99]::query::plumbing::try_execute_query::<rustc_query_impl[e67a967fc473869]::DynamicConfig<rustc_query_system[5b88147768c3e99]::query::caches::SingleCache<rustc_middle[b3d98edcda7bf203]::query::erase::Erased<[u8; 1usize]>>, false, false, false>, rustc_query_impl[e67a967fc473869]::plumbing::QueryCtxt, false>
59: 0x7a5619388bce - rustc_query_impl[e67a967fc473869]::query_impl::analysis::get_query_non_incr::__rust_end_short_backtrace
60: 0x7a5619470679 - rustc_interface[196843e09e80f515]::interface::run_compiler::<core[7ca38d3847df487d]::result::Result<(), rustc_span[d12ce1794d211847]::ErrorGuaranteed>, rustc_driver_impl[e7849dc6dfe13602]::run_compiler::{closure#0}>::{closure#1}
61: 0x7a56192a1cc7 - std[72a4a0de9fece711]::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface[196843e09e80f515]::util::run_in_thread_with_globals<rustc_interface[196843e09e80f515]::util::run_in_thread_pool_with_globals<rustc_interface[196843e09e80f515]::interface::run_compiler<core[7ca38d3847df487d]::result::Result<(), rustc_span[d12ce1794d211847]::ErrorGuaranteed>, rustc_driver_impl[e7849dc6dfe13602]::run_compiler::{closure#0}>::{closure#1}, core[7ca38d3847df487d]::result::Result<(), rustc_span[d12ce1794d211847]::ErrorGuaranteed>>::{closure#0}, core[7ca38d3847df487d]::result::Result<(), rustc_span[d12ce1794d211847]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[7ca38d3847df487d]::result::Result<(), rustc_span[d12ce1794d211847]::ErrorGuaranteed>>
62: 0x7a56192a1962 - <<std[72a4a0de9fece711]::thread::Builder>::spawn_unchecked_<rustc_interface[196843e09e80f515]::util::run_in_thread_with_globals<rustc_interface[196843e09e80f515]::util::run_in_thread_pool_with_globals<rustc_interface[196843e09e80f515]::interface::run_compiler<core[7ca38d3847df487d]::result::Result<(), rustc_span[d12ce1794d211847]::ErrorGuaranteed>, rustc_driver_impl[e7849dc6dfe13602]::run_compiler::{closure#0}>::{closure#1}, core[7ca38d3847df487d]::result::Result<(), rustc_span[d12ce1794d211847]::ErrorGuaranteed>>::{closure#0}, core[7ca38d3847df487d]::result::Result<(), rustc_span[d12ce1794d211847]::ErrorGuaranteed>>::{closure#0}::{closure#0}, core[7ca38d3847df487d]::result::Result<(), rustc_span[d12ce1794d211847]::ErrorGuaranteed>>::{closure#1} as core[7ca38d3847df487d]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
63: 0x7a56192a10ab - std::sys::pal::unix::thread::Thread::new::thread_start::haeb94917c0a274f1
64: 0x7a5613494ac3 - start_thread
at ./nptl/pthread_create.c:442:8
65: 0x7a5613526850 - __GI___clone3
at ./misc/../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
66: 0x0 - <unknown>
error: the compiler unexpectedly panicked. this is a bug.```
</p>
</details>
Metadata
Metadata
Assignees
Labels
Area: Mid-level IR (MIR) - https://blog.rust-lang.org/2016/04/19/MIR.htmlArea: Constant evaluation, covers all const contexts (static, const fn, ...)Area: the `#[repr(stuff)]` attributeCategory: This is a bug.Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️Status: A Minimal Complete and Verifiable Example has been found for this issueRelevant to the compiler team, which will review and decide on the PR/issue.