-
Notifications
You must be signed in to change notification settings - Fork 13.6k
Closed
Labels
A-MIRArea: Mid-level IR (MIR) - https://blog.rust-lang.org/2016/04/19/MIR.htmlArea: Mid-level IR (MIR) - https://blog.rust-lang.org/2016/04/19/MIR.htmlI-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️
Description
#![feature(rustc_attrs)]
struct A;
#[rustc_mir(graphviz="foo.gv")]
fn mir() {
A;
}
fn main() {
mir();
}
Will fail with
error: internal compiler error: expected closure or fn
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 'Box<Any>', src/libsyntax/errors/mod.rs:230
stack backtrace:
1: 0x7f95437b48ee - sys::backtrace::tracing::imp::write::hf6d5c8e3c66fa27b19t
2: 0x7f95437bb9d5 - panicking::log_panic::closure.41821
3: 0x7f95437bb475 - panicking::log_panic::h144dc9280b7645fcjhy
4: 0x7f95437828e3 - sys_common::unwind::begin_unwind_inner::h55d5feb426745bbeX0s
5: 0x7f953f88f437 - sys_common::unwind::begin_unwind::h9096788442279507124
6: 0x7f953f88f7f4 - errors::Handler::bug::h4aa521e1f5a0e236f2c
7: 0x7f9540c34a2c - session::Session::bug::hdc71a3fb8a9de8b66Qr
8: 0x7f954211fdd5 - trans::declare::declare_rust_fn::h3499333bf3b164a8ybC
9: 0x7f954218e65c - trans::declare::define_internal_rust_fn::hca6541cf5ddec74cRlC
10: 0x7f9542180d8e - trans::monomorphize::monomorphic_fn::h4e88fa61c342a4b4OyP
11: 0x7f9542232972 - trans::mir::did::MirContext<'bcx, 'tcx>::trans_fn_ref::h55237ed814e0e1dd6rP
12: 0x7f954222ed02 - trans::mir::constant::MirContext<'bcx, 'tcx>::trans_constant::h277fbb9a4164ee637qO
13: 0x7f954222d715 - trans::mir::operand::MirContext<'bcx, 'tcx>::trans_operand::h1ccc23113196f11cpbP
14: 0x7f954222f264 - trans::mir::rvalue::MirContext<'bcx, 'tcx>::trans_rvalue::h3fd0006d084b3140KFO
15: 0x7f954222d5d5 - trans::mir::statement::MirContext<'bcx, 'tcx>::trans_statement::hd3d43f205659cc06llP
16: 0x7f954213f525 - trans::mir::trans_mir::ha8bcfa1e861a5f5fqNN
17: 0x7f954213a878 - trans::base::trans_closure::haef7ad19910b1872Adj
18: 0x7f9542142b4c - trans::base::trans_fn::h663accb72c321f7bJnj
19: 0x7f9542147117 - trans::base::trans_item::h2e72d9aa09c9cb4fwNj
20: 0x7f9542153715 - trans::base::trans_crate::hf6ee98bf37c50fb1Ezk
21: 0x7f9543ceaeea - driver::phase_4_translate_to_llvm::h3282cc6c2caab9027Ua
22: 0x7f9543ce4c87 - driver::phase_3_run_analysis_passes::closure.23230
23: 0x7f9543cc29d5 - middle::ty::context::ctxt<'tcx>::create_and_enter::h5420659107844287102
24: 0x7f9543cbe139 - driver::phase_3_run_analysis_passes::h5834150331257021912
25: 0x7f9543ca1cbd - driver::compile_input::h623a21a74ad11852jca
26: 0x7f9543e03b2b - run_compiler::h1b7d8da52bbb04c7Vyc
27: 0x7f9543e00d58 - sys_common::unwind::try::try_fn::h4212622780748696621
28: 0x7f95437b25e8 - __rust_try
29: 0x7f95437a967b - sys_common::unwind::try::inner_try::hb757dfa83a0260eavXs
30: 0x7f9543e01080 - boxed::F.FnBox<A>::call_box::h10788927616206636218
31: 0x7f95437b9c63 - sys::thread::Thread::new::thread_start::h65b91c47bba3fbc3wjx
32: 0x7f953d4754a3 - start_thread
33: 0x7f954344713c - clone
34: 0x0 - <unknown>
The reason is that we assign ItemKind::Struct
to this kind of unit-structs, and then unconditionally try to translate these as if they were a functions (which holds true for tuple-like structs, but not unit-like structs).
Metadata
Metadata
Assignees
Labels
A-MIRArea: Mid-level IR (MIR) - https://blog.rust-lang.org/2016/04/19/MIR.htmlArea: Mid-level IR (MIR) - https://blog.rust-lang.org/2016/04/19/MIR.htmlI-ICEIssue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️Issue: The compiler panicked, giving an Internal Compilation Error (ICE) ❄️