Skip to content

cycle detected when optimizing MIR #143700

@estebank

Description

@estebank

Only under --release, after #142625 https://github.com/EFanZh/ast-demangle no longer builds with a cycle error during inline evaluation. Default --debug builds do not hit this.

Code

https://github.com/EFanZh/ast-demangle (as of commit b4b0d5d, which is current HEAD)

I expected to see this happen: pass

Instead, this happened: cycle error

error[E0391]: cycle detected when optimizing MIR for `rust_v0::<impl at src/rust_v0/mod.rs:60:32: 60:41>::eq`
   --> src/rust_v0/mod.rs:60:32
    |
60  | #[derive(Clone, Eq, Hash, Ord, PartialEq, PartialOrd)]
    |                                ^^^^^^^^^
    |
note: ...which requires optimizing MIR for `rust_v0::<impl at src/rust_v0/mod.rs:210:39: 210:48>::eq`...
   --> src/rust_v0/mod.rs:210:39
    |
210 | #[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
    |                                       ^^^^^^^^^
    = note: ...which again requires optimizing MIR for `rust_v0::<impl at src/rust_v0/mod.rs:60:32: 60:41>::eq`, completing the cycle
note: cycle used when optimizing MIR for `rust_v0::<impl at src/rust_v0/mod.rs:15:39: 15:48>::eq`
   --> src/rust_v0/mod.rs:15:39
    |
15  | #[derive(Clone, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
    |                                       ^^^^^^^^^
    = note: see https://rustc-dev-guide.rust-lang.org/overview.html#queries and https://rustc-dev-guide.rust-lang.org/query.html for more information

Version it worked on

Before #142625

Version with regression

#142625

Backtrace

Backtrace

thread 'rustc' panicked at compiler/rustc_errors/src/lib.rs:1838:17:
aborting due to `-Z treat-err-as-bug=1`
stack backtrace:
   0:     0x71ada4175aa3 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h4b84b18f52d871f7
   1:     0x71ada4802c7f - core::fmt::write::hddeac91703b6499d
   2:     0x71ada416b5d3 - std::io::Write::write_fmt::h28f31377e98688f6
   3:     0x71ada4175902 - std::sys::backtrace::BacktraceLock::print::h52d0fd2be6990145
   4:     0x71ada417939a - std::panicking::default_hook::{{closure}}::h77b4c5e7cec39435
   5:     0x71ada4178f1f - std::panicking::default_hook::h61df2e12d1f260cf
   6:     0x71ada3223d33 - std[c539802e89e8d81a]::panicking::update_hook::<alloc[247485d20f619618]::boxed::Box<rustc_driver_impl[3a492dd9a06cbf2d]::install_ice_hook::{closure#1}>>::{closure#0}
   7:     0x71ada4179beb - std::panicking::rust_panic_with_hook::h2deddd251118f4d3
   8:     0x71ada41798b6 - std::panicking::begin_panic_handler::{{closure}}::h5fe965e188abe62f
   9:     0x71ada4175f69 - std::sys::backtrace::__rust_end_short_backtrace::h0f72bacaad7bd6db
  10:     0x71ada41795cd - __rustc[38c938b2c9dd7d5c]::rust_begin_unwind
  11:     0x71ada08ba720 - core::panicking::panic_fmt::h80892ba21db80006
  12:     0x71ada3274037 - <rustc_errors[793135f862eb652b]::DiagCtxtInner>::panic_if_treat_err_as_bug
  13:     0x71ada5d31e88 - <rustc_errors[793135f862eb652b]::DiagCtxtInner>::emit_diagnostic::{closure#3}
  14:     0x71ada5d2f98d - rustc_interface[b327675518afe1b5]::callbacks::track_diagnostic::<core[cdc97c9c0b6fd462]::option::Option<rustc_span[dd9d35b931de6930]::ErrorGuaranteed>>::{closure#0}
  15:     0x71ada5d2f32b - rustc_interface[b327675518afe1b5]::callbacks::track_diagnostic::<core[cdc97c9c0b6fd462]::option::Option<rustc_span[dd9d35b931de6930]::ErrorGuaranteed>>
  16:     0x71ada5d2e93d - <rustc_errors[793135f862eb652b]::DiagCtxtInner>::emit_diagnostic
  17:     0x71ada5d2e7ff - <rustc_errors[793135f862eb652b]::DiagCtxtHandle>::emit_diagnostic
  18:     0x71ada0fdc5d0 - <rustc_span[dd9d35b931de6930]::ErrorGuaranteed as rustc_errors[793135f862eb652b]::diagnostic::EmissionGuarantee>::emit_producing_guarantee
  19:     0x71ada3b9bf8c - rustc_query_system[8d89d55943c1ebd2]::query::plumbing::mk_cycle::<rustc_query_impl[3a213cbfc7e81906]::DynamicConfig<rustc_query_system[8d89d55943c1ebd2]::query::caches::DefaultCache<rustc_type_ir[4c29bc3dc42f1408]::predicate::TraitRef<rustc_middle[5796165e46beff11]::ty::context::TyCtxt>, rustc_middle[5796165e46beff11]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[3a213cbfc7e81906]::plumbing::QueryCtxt>
  20:     0x71ada3b82859 - rustc_query_system[8d89d55943c1ebd2]::query::plumbing::cycle_error::<rustc_query_impl[3a213cbfc7e81906]::DynamicConfig<rustc_query_system[8d89d55943c1ebd2]::query::caches::DefIdCache<rustc_middle[5796165e46beff11]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[3a213cbfc7e81906]::plumbing::QueryCtxt>
  21:     0x71ada483849a - rustc_query_system[8d89d55943c1ebd2]::query::plumbing::try_execute_query::<rustc_query_impl[3a213cbfc7e81906]::DynamicConfig<rustc_query_system[8d89d55943c1ebd2]::query::caches::DefIdCache<rustc_middle[5796165e46beff11]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[3a213cbfc7e81906]::plumbing::QueryCtxt, false>
  22:     0x71ada483711b - rustc_query_impl[3a213cbfc7e81906]::query_impl::optimized_mir::get_query_non_incr::__rust_end_short_backtrace
  23:     0x71ada1a5e420 - <rustc_middle[5796165e46beff11]::ty::context::TyCtxt>::instance_mir
  24:     0x71ada542e9f5 - rustc_mir_transform[b3fbc0bf8a9d046a]::inline::process_blocks::<rustc_mir_transform[b3fbc0bf8a9d046a]::inline::NormalInliner>
  25:     0x71ada542d83f - rustc_mir_transform[b3fbc0bf8a9d046a]::inline::process_blocks::<rustc_mir_transform[b3fbc0bf8a9d046a]::inline::NormalInliner>
  26:     0x71ada542d83f - rustc_mir_transform[b3fbc0bf8a9d046a]::inline::process_blocks::<rustc_mir_transform[b3fbc0bf8a9d046a]::inline::NormalInliner>
  27:     0x71ada542d83f - rustc_mir_transform[b3fbc0bf8a9d046a]::inline::process_blocks::<rustc_mir_transform[b3fbc0bf8a9d046a]::inline::NormalInliner>
  28:     0x71ada547e3fd - <rustc_mir_transform[b3fbc0bf8a9d046a]::inline::Inline as rustc_mir_transform[b3fbc0bf8a9d046a]::pass_manager::MirPass>::run_pass
  29:     0x71ada4810158 - rustc_mir_transform[b3fbc0bf8a9d046a]::run_optimization_passes
  30:     0x71ada51f90a0 - rustc_mir_transform[b3fbc0bf8a9d046a]::optimized_mir
  31:     0x71ada51f8875 - rustc_query_impl[3a213cbfc7e81906]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[3a213cbfc7e81906]::query_impl::optimized_mir::dynamic_query::{closure#2}::{closure#0}, rustc_middle[5796165e46beff11]::query::erase::Erased<[u8; 8usize]>>
  32:     0x71ada4837c25 - rustc_query_system[8d89d55943c1ebd2]::query::plumbing::try_execute_query::<rustc_query_impl[3a213cbfc7e81906]::DynamicConfig<rustc_query_system[8d89d55943c1ebd2]::query::caches::DefIdCache<rustc_middle[5796165e46beff11]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[3a213cbfc7e81906]::plumbing::QueryCtxt, false>
  33:     0x71ada483711b - rustc_query_impl[3a213cbfc7e81906]::query_impl::optimized_mir::get_query_non_incr::__rust_end_short_backtrace
  34:     0x71ada1a5e420 - <rustc_middle[5796165e46beff11]::ty::context::TyCtxt>::instance_mir
  35:     0x71ada542e9f5 - rustc_mir_transform[b3fbc0bf8a9d046a]::inline::process_blocks::<rustc_mir_transform[b3fbc0bf8a9d046a]::inline::NormalInliner>
  36:     0x71ada542d83f - rustc_mir_transform[b3fbc0bf8a9d046a]::inline::process_blocks::<rustc_mir_transform[b3fbc0bf8a9d046a]::inline::NormalInliner>
  37:     0x71ada542d83f - rustc_mir_transform[b3fbc0bf8a9d046a]::inline::process_blocks::<rustc_mir_transform[b3fbc0bf8a9d046a]::inline::NormalInliner>
  38:     0x71ada542d83f - rustc_mir_transform[b3fbc0bf8a9d046a]::inline::process_blocks::<rustc_mir_transform[b3fbc0bf8a9d046a]::inline::NormalInliner>
  39:     0x71ada547e3fd - <rustc_mir_transform[b3fbc0bf8a9d046a]::inline::Inline as rustc_mir_transform[b3fbc0bf8a9d046a]::pass_manager::MirPass>::run_pass
  40:     0x71ada4810158 - rustc_mir_transform[b3fbc0bf8a9d046a]::run_optimization_passes
  41:     0x71ada51f90a0 - rustc_mir_transform[b3fbc0bf8a9d046a]::optimized_mir
  42:     0x71ada51f8875 - rustc_query_impl[3a213cbfc7e81906]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[3a213cbfc7e81906]::query_impl::optimized_mir::dynamic_query::{closure#2}::{closure#0}, rustc_middle[5796165e46beff11]::query::erase::Erased<[u8; 8usize]>>
  43:     0x71ada4837c25 - rustc_query_system[8d89d55943c1ebd2]::query::plumbing::try_execute_query::<rustc_query_impl[3a213cbfc7e81906]::DynamicConfig<rustc_query_system[8d89d55943c1ebd2]::query::caches::DefIdCache<rustc_middle[5796165e46beff11]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[3a213cbfc7e81906]::plumbing::QueryCtxt, false>
  44:     0x71ada483711b - rustc_query_impl[3a213cbfc7e81906]::query_impl::optimized_mir::get_query_non_incr::__rust_end_short_backtrace
  45:     0x71ada1a5e420 - <rustc_middle[5796165e46beff11]::ty::context::TyCtxt>::instance_mir
  46:     0x71ada542e9f5 - rustc_mir_transform[b3fbc0bf8a9d046a]::inline::process_blocks::<rustc_mir_transform[b3fbc0bf8a9d046a]::inline::NormalInliner>
  47:     0x71ada542d83f - rustc_mir_transform[b3fbc0bf8a9d046a]::inline::process_blocks::<rustc_mir_transform[b3fbc0bf8a9d046a]::inline::NormalInliner>
  48:     0x71ada542d83f - rustc_mir_transform[b3fbc0bf8a9d046a]::inline::process_blocks::<rustc_mir_transform[b3fbc0bf8a9d046a]::inline::NormalInliner>
  49:     0x71ada547e3fd - <rustc_mir_transform[b3fbc0bf8a9d046a]::inline::Inline as rustc_mir_transform[b3fbc0bf8a9d046a]::pass_manager::MirPass>::run_pass
  50:     0x71ada4810158 - rustc_mir_transform[b3fbc0bf8a9d046a]::run_optimization_passes
  51:     0x71ada51f90a0 - rustc_mir_transform[b3fbc0bf8a9d046a]::optimized_mir
  52:     0x71ada51f8875 - rustc_query_impl[3a213cbfc7e81906]::plumbing::__rust_begin_short_backtrace::<rustc_query_impl[3a213cbfc7e81906]::query_impl::optimized_mir::dynamic_query::{closure#2}::{closure#0}, rustc_middle[5796165e46beff11]::query::erase::Erased<[u8; 8usize]>>
  53:     0x71ada4837c25 - rustc_query_system[8d89d55943c1ebd2]::query::plumbing::try_execute_query::<rustc_query_impl[3a213cbfc7e81906]::DynamicConfig<rustc_query_system[8d89d55943c1ebd2]::query::caches::DefIdCache<rustc_middle[5796165e46beff11]::query::erase::Erased<[u8; 8usize]>>, false, false, false>, rustc_query_impl[3a213cbfc7e81906]::plumbing::QueryCtxt, false>
  54:     0x71ada483711b - rustc_query_impl[3a213cbfc7e81906]::query_impl::optimized_mir::get_query_non_incr::__rust_end_short_backtrace
  55:     0x71ada534af1d - <rustc_metadata[e2b15c2c3f6f00d0]::rmeta::encoder::EncodeContext>::encode_crate_root
  56:     0x71ada5c7d5f0 - <rustc_metadata[e2b15c2c3f6f00d0]::rmeta::encoder::encode_metadata::{closure#3} as core[cdc97c9c0b6fd462]::ops::function::FnOnce<(rustc_middle[5796165e46beff11]::ty::context::TyCtxt, &std[c539802e89e8d81a]::path::Path)>>::call_once
  57:     0x71ada5c7a830 - rustc_metadata[e2b15c2c3f6f00d0]::rmeta::encoder::encode_metadata
  58:     0x71ada575ff98 - rustc_metadata[e2b15c2c3f6f00d0]::fs::encode_and_write_metadata
  59:     0x71ada5b0b68a - <rustc_interface[b327675518afe1b5]::queries::Linker>::codegen_and_build_linker
  60:     0x71ada5b091c7 - rustc_interface[b327675518afe1b5]::passes::create_and_enter_global_ctxt::<core[cdc97c9c0b6fd462]::option::Option<rustc_interface[b327675518afe1b5]::queries::Linker>, rustc_driver_impl[3a492dd9a06cbf2d]::run_compiler::{closure#0}::{closure#2}>::{closure#2}::{closure#0}
  61:     0x71ada5aed6e4 - rustc_interface[b327675518afe1b5]::interface::run_compiler::<(), rustc_driver_impl[3a492dd9a06cbf2d]::run_compiler::{closure#0}>::{closure#1}
  62:     0x71ada59d29f8 - std[c539802e89e8d81a]::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface[b327675518afe1b5]::util::run_in_thread_with_globals<rustc_interface[b327675518afe1b5]::util::run_in_thread_pool_with_globals<rustc_interface[b327675518afe1b5]::interface::run_compiler<(), rustc_driver_impl[3a492dd9a06cbf2d]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
  63:     0x71ada59d26d6 - <<std[c539802e89e8d81a]::thread::Builder>::spawn_unchecked_<rustc_interface[b327675518afe1b5]::util::run_in_thread_with_globals<rustc_interface[b327675518afe1b5]::util::run_in_thread_pool_with_globals<rustc_interface[b327675518afe1b5]::interface::run_compiler<(), rustc_driver_impl[3a492dd9a06cbf2d]::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core[cdc97c9c0b6fd462]::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
  64:     0x71ada59d0cfd - std::sys::pal::unix::thread::Thread::new::thread_start::h7f3d8f76868ca167
  65:     0x71ad9f29caa4 - start_thread
                               at ./nptl/pthread_create.c:447:8
  66:     0x71ad9f329c3c - clone3
                               at ./misc/../sysdeps/unix/sysv/linux/x86_64/clone3.S:78:0
  67:                0x0 - <unknown>

Metadata

Metadata

Labels

C-bugCategory: This is a bug.I-cycleIssue: A query cycle occurred while none was expectedI-prioritizeIssue: Indicates that prioritization has been requested for this issue.S-has-mcveStatus: A Minimal Complete and Verifiable Example has been found for this issueT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.regression-from-stable-to-nightlyPerformance or correctness regression from stable to nightly.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions