Skip to content

[WIP] MIR move elimination pass#156046

Draft
Amanieu wants to merge 4 commits into
rust-lang:mainfrom
Amanieu:move-elimination
Draft

[WIP] MIR move elimination pass#156046
Amanieu wants to merge 4 commits into
rust-lang:mainfrom
Amanieu:move-elimination

Conversation

@Amanieu
Copy link
Copy Markdown
Member

@Amanieu Amanieu commented May 1, 2026

View all comments

This is very much a work in progress, and will sometimes generate broken/unsound MIR.

@rustbot rustbot added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels May 1, 2026
@Amanieu
Copy link
Copy Markdown
Member Author

Amanieu commented May 1, 2026

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

@rust-bors

This comment has been minimized.

@rustbot rustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label May 1, 2026
rust-bors Bot pushed a commit that referenced this pull request May 1, 2026
@rust-log-analyzer

This comment has been minimized.

@rust-bors
Copy link
Copy Markdown
Contributor

rust-bors Bot commented May 1, 2026

💔 Test for 884fdb2 failed: CI. Failed job:

@rust-log-analyzer

This comment has been minimized.

@Amanieu Amanieu force-pushed the move-elimination branch from 8a0479a to d431a34 Compare May 1, 2026 17:02
@Amanieu
Copy link
Copy Markdown
Member Author

Amanieu commented May 1, 2026

@bors try

@rust-bors

This comment has been minimized.

rust-bors Bot pushed a commit that referenced this pull request May 1, 2026
@rust-log-analyzer

This comment has been minimized.

@rust-bors
Copy link
Copy Markdown
Contributor

rust-bors Bot commented May 1, 2026

💔 Test for b42852b failed: CI. Failed job:

@rust-log-analyzer

This comment has been minimized.

@Amanieu Amanieu force-pushed the move-elimination branch from d431a34 to a226132 Compare May 3, 2026 13:33
@rust-log-analyzer

This comment has been minimized.

@Amanieu
Copy link
Copy Markdown
Member Author

Amanieu commented May 3, 2026

@bors try

@rust-bors

This comment has been minimized.

rust-bors Bot pushed a commit that referenced this pull request May 3, 2026
@rust-bors
Copy link
Copy Markdown
Contributor

rust-bors Bot commented May 3, 2026

💔 Test for 8165e10 failed: CI. Failed job:

@rust-log-analyzer

This comment has been minimized.

@Amanieu Amanieu force-pushed the move-elimination branch from a226132 to 54b60b7 Compare May 3, 2026 22:38
@Amanieu
Copy link
Copy Markdown
Member Author

Amanieu commented May 3, 2026

@bors try

@rust-bors

This comment has been minimized.

rust-bors Bot pushed a commit that referenced this pull request May 3, 2026
@rust-log-analyzer

This comment has been minimized.

@rust-bors
Copy link
Copy Markdown
Contributor

rust-bors Bot commented May 4, 2026

☀️ Try build successful (CI)
Build commit: 6c8a539 (6c8a539b5dff4f4f443a5c0c4ed57749516e3395, parent: ad3a598ca4bc7c68bcbbce3e0d3be9a7618df190)

@rust-bors
Copy link
Copy Markdown
Contributor

rust-bors Bot commented May 7, 2026

☀️ Try build successful (CI)
Build commit: b212d8c (b212d8ce59ab7928c571853512e25e1843fee61d, parent: a4069f5bd099e4cf94c2313a47d864f6479ee304)

@rust-timer

This comment has been minimized.

@rust-timer
Copy link
Copy Markdown
Collaborator

Finished benchmarking commit (b212d8c): comparison URL.

Overall result: ❌✅ regressions and improvements - please read:

Benchmarking means the PR may be perf-sensitive. It's automatically marked not fit for rolling up. Overriding is possible but disadvised: it risks changing compiler perf.

Next, please: If you can, justify the regressions found in this try perf run in writing along with @rustbot label: +perf-regression-triaged. If not, fix the regressions and do another perf run. Neutral or positive results will clear the label automatically.

@bors rollup=never
@rustbot label: -S-waiting-on-perf +perf-regression

Instruction count

Our most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.

mean range count
Regressions ❌
(primary)
2.4% [0.2%, 10.7%] 23
Regressions ❌
(secondary)
17.6% [0.0%, 761.5%] 49
Improvements ✅
(primary)
-1.1% [-6.0%, -0.2%] 207
Improvements ✅
(secondary)
-1.2% [-13.3%, -0.0%] 193
All ❌✅ (primary) -0.8% [-6.0%, 10.7%] 230

Max RSS (memory usage)

Results (primary -1.8%, secondary 0.1%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
2.3% [1.0%, 3.4%] 3
Regressions ❌
(secondary)
2.9% [1.1%, 7.5%] 7
Improvements ✅
(primary)
-2.8% [-6.8%, -0.4%] 12
Improvements ✅
(secondary)
-1.6% [-3.1%, -0.6%] 11
All ❌✅ (primary) -1.8% [-6.8%, 3.4%] 15

Cycles

Results (primary -2.8%, secondary -0.3%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
4.0% [2.0%, 7.5%] 5
Regressions ❌
(secondary)
40.6% [1.0%, 282.2%] 8
Improvements ✅
(primary)
-3.3% [-7.1%, -2.0%] 65
Improvements ✅
(secondary)
-5.4% [-22.8%, -1.4%] 65
All ❌✅ (primary) -2.8% [-7.1%, 7.5%] 70

Binary size

Results (primary 0.5%, secondary 1.5%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
1.5% [0.1%, 6.6%] 80
Regressions ❌
(secondary)
2.4% [0.1%, 6.6%] 86
Improvements ✅
(primary)
-1.0% [-2.7%, -0.2%] 56
Improvements ✅
(secondary)
-1.2% [-5.6%, -0.1%] 26
All ❌✅ (primary) 0.5% [-2.7%, 6.6%] 136

Bootstrap: 500.816s -> 492.388s (-1.68%)
Artifact size: 395.23 MiB -> 394.15 MiB (-0.27%)

@rust-bors

This comment has been minimized.

Amanieu added 3 commits May 20, 2026 20:31
- Changed `iter_intervals` to return `RangeInclusive` instead of `Range`
- Added `clear_row` and `disjoint_rows` methods
@Amanieu Amanieu force-pushed the move-elimination branch from 5e02732 to 566bc67 Compare May 20, 2026 18:38
@Amanieu
Copy link
Copy Markdown
Member Author

Amanieu commented May 20, 2026

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

@rust-bors

This comment has been minimized.

@rustbot rustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label May 20, 2026
rust-bors Bot pushed a commit that referenced this pull request May 20, 2026
@rust-log-analyzer

This comment has been minimized.

@rust-bors
Copy link
Copy Markdown
Contributor

rust-bors Bot commented May 20, 2026

💔 Test for f4741d9 failed: CI. Failed job:

@rust-log-analyzer

This comment has been minimized.

@Amanieu Amanieu force-pushed the move-elimination branch from 566bc67 to 62e9181 Compare May 20, 2026 19:01
@Amanieu
Copy link
Copy Markdown
Member Author

Amanieu commented May 20, 2026

@bors try

rust-bors Bot pushed a commit that referenced this pull request May 20, 2026
@rust-bors

This comment has been minimized.

@rust-log-analyzer
Copy link
Copy Markdown
Collaborator

The job aarch64-gnu-llvm-21-1 failed! Check out the build log: (web) (plain enhanced) (plain)

Click to see the possible cause of the failure (guessed by this bot)
---- [ui] tests/ui/drop/drop_order.rs#edition2024 stdout ----

error in revision `edition2024`: test compilation failed although it shouldn't!
status: exit status: 101
command: env -u RUSTC_LOG_COLOR RUSTC_ICE="0" RUST_BACKTRACE="short" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/ui/drop/drop_order.rs" "-Zthreads=1" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Z" "ignore-directory-in-diagnostics-source-blocks=/cargo" "-Z" "ignore-directory-in-diagnostics-source-blocks=/checkout/vendor" "--sysroot" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2" "--target=aarch64-unknown-linux-gnu" "--cfg" "edition2024" "--check-cfg" "cfg(test,FALSE,edition2021,edition2024)" "-O" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zdeduplicate-diagnostics=no" "-Zwrite-long-types-to-disk=no" "-Cstrip=debuginfo" "-C" "prefer-dynamic" "-o" "/checkout/obj/build/aarch64-unknown-linux-gnu/test/ui/drop/drop_order.edition2024/a" "-A" "internal_features" "-A" "incomplete_features" "-A" "unused_parens" "-A" "unused_braces" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/aarch64-unknown-linux-gnu/native/rust-test-helpers" "--edition=2024" "-Z" "validate-mir" "-Z" "lint-mir"
stdout: none
--- stderr -------------------------------
note: no errors encountered even though delayed bugs were created

note: those delayed bugs will now be shown as internal compiler errors

error: internal compiler error: broken MIR in Item(DefId(0:23 ~ drop_order[ca1a]::main)) (after pass MoveElimination) at bb30[0]:
                                use of local _7, which has no storage here
  --> /checkout/tests/ui/drop/drop_order.rs:252:1
   |
LL | }
   | ^
   |
note: delayed at compiler/rustc_mir_transform/src/lint.rs:80:22
         0: <std::backtrace::Backtrace>::create
         1: <rustc_errors::DiagCtxtInner>::emit_diagnostic
         2: <rustc_errors::DiagCtxtHandle>::emit_diagnostic
         3: <rustc_errors::diagnostic::Diag>::emit_producing_error_guaranteed
         4: <rustc_errors::DiagCtxtHandle>::span_delayed_bug::<rustc_span::span_encoding::Span, alloc::string::String>
         5: <rustc_mir_transform::lint::Lint>::fail::<alloc::string::String>
         6: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_local
         7: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_place
         8: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_terminator
         9: rustc_mir_transform::lint::lint_body
        10: rustc_mir_transform::pass_manager::run_passes_inner
        11: rustc_mir_transform::run_optimization_passes
        12: rustc_mir_transform::optimized_mir
        13: rustc_query_impl::query_impl::optimized_mir::invoke_provider_fn::__rust_begin_short_backtrace
        14: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<rustc_query_impl::execution::execute_job_non_incr<rustc_middle::query::caches::DefIdCache<rustc_middle::query::erase::ErasedData<[u8; 8]>>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 8]>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 8]>>
        15: rustc_query_impl::execution::try_execute_query::<rustc_middle::query::caches::DefIdCache<rustc_middle::query::erase::ErasedData<[u8; 8]>>, false>
        16: rustc_query_impl::query_impl::optimized_mir::execute_query_non_incr::__rust_end_short_backtrace
        17: <rustc_middle::ty::context::TyCtxt>::instance_mir
        18: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_data_structures::sync::parallel::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners<rustc_interface::passes::analysis::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#1}::{closure#0}>>
        19: rustc_data_structures::sync::parallel::par_for_each_in::<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners<rustc_interface::passes::analysis::{closure#1}::{closure#0}>::{closure#0}>
        20: <rustc_session::session::Session>::time::<(), rustc_interface::passes::analysis::{closure#1}>
        21: rustc_interface::passes::analysis
        22: rustc_query_impl::query_impl::analysis::invoke_provider_fn::__rust_begin_short_backtrace
        23: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<rustc_query_impl::execution::execute_job_non_incr<rustc_middle::query::caches::SingleCache<rustc_middle::query::erase::ErasedData<[u8; 0]>>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 0]>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 0]>>
        24: rustc_query_impl::execution::try_execute_query::<rustc_middle::query::caches::SingleCache<rustc_middle::query::erase::ErasedData<[u8; 0]>>, false>
        25: rustc_query_impl::query_impl::analysis::execute_query_non_incr::__rust_end_short_backtrace
        26: std::panicking::catch_unwind::<core::option::Option<rustc_interface::queries::Linker>, core::panic::unwind_safe::AssertUnwindSafe<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}::{closure#0}>>
        27: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<<rustc_middle::ty::context::GlobalCtxt>::enter<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}, core::option::Option<rustc_interface::queries::Linker>>::{closure#1}, core::option::Option<rustc_interface::queries::Linker>>::{closure#0}, core::option::Option<rustc_interface::queries::Linker>>
        28: <rustc_middle::ty::context::TyCtxt>::create_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}>
        29: rustc_interface::passes::create_and_enter_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>
        30: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}::{closure#0}>>
        31: rustc_interface::interface::run_compiler::<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}
        32: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}::{closure#0}, ()>
        33: std::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
        34: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1}::{closure#0}>>
        35: <std::thread::lifecycle::spawn_unchecked<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
        36: <std::sys::thread::unix::Thread>::new::thread_start
        37: <unknown>
        38: <unknown>
      
  --> /checkout/tests/ui/drop/drop_order.rs:252:1
   |
LL | }
   | ^

error: internal compiler error: broken MIR in Item(DefId(0:23 ~ drop_order[ca1a]::main)) (after pass MoveElimination) at bb28[0]:
                                use of local _14, which has no storage here
  --> /checkout/tests/ui/drop/drop_order.rs:252:1
   |
LL | }
   | ^
   |
note: delayed at compiler/rustc_mir_transform/src/lint.rs:80:22
         0: <std::backtrace::Backtrace>::create
         1: <rustc_errors::DiagCtxtInner>::emit_diagnostic
         2: <rustc_errors::DiagCtxtHandle>::emit_diagnostic
         3: <rustc_errors::diagnostic::Diag>::emit_producing_error_guaranteed
         4: <rustc_errors::DiagCtxtHandle>::span_delayed_bug::<rustc_span::span_encoding::Span, alloc::string::String>
         5: <rustc_mir_transform::lint::Lint>::fail::<alloc::string::String>
         6: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_local
         7: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_place
         8: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_terminator
         9: rustc_mir_transform::lint::lint_body
        10: rustc_mir_transform::pass_manager::run_passes_inner
        11: rustc_mir_transform::run_optimization_passes
        12: rustc_mir_transform::optimized_mir
        13: rustc_query_impl::query_impl::optimized_mir::invoke_provider_fn::__rust_begin_short_backtrace
        14: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<rustc_query_impl::execution::execute_job_non_incr<rustc_middle::query::caches::DefIdCache<rustc_middle::query::erase::ErasedData<[u8; 8]>>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 8]>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 8]>>
        15: rustc_query_impl::execution::try_execute_query::<rustc_middle::query::caches::DefIdCache<rustc_middle::query::erase::ErasedData<[u8; 8]>>, false>
        16: rustc_query_impl::query_impl::optimized_mir::execute_query_non_incr::__rust_end_short_backtrace
        17: <rustc_middle::ty::context::TyCtxt>::instance_mir
        18: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_data_structures::sync::parallel::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners<rustc_interface::passes::analysis::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#1}::{closure#0}>>
        19: rustc_data_structures::sync::parallel::par_for_each_in::<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners<rustc_interface::passes::analysis::{closure#1}::{closure#0}>::{closure#0}>
        20: <rustc_session::session::Session>::time::<(), rustc_interface::passes::analysis::{closure#1}>
        21: rustc_interface::passes::analysis
        22: rustc_query_impl::query_impl::analysis::invoke_provider_fn::__rust_begin_short_backtrace
        23: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<rustc_query_impl::execution::execute_job_non_incr<rustc_middle::query::caches::SingleCache<rustc_middle::query::erase::ErasedData<[u8; 0]>>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 0]>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 0]>>
        24: rustc_query_impl::execution::try_execute_query::<rustc_middle::query::caches::SingleCache<rustc_middle::query::erase::ErasedData<[u8; 0]>>, false>
        25: rustc_query_impl::query_impl::analysis::execute_query_non_incr::__rust_end_short_backtrace
        26: std::panicking::catch_unwind::<core::option::Option<rustc_interface::queries::Linker>, core::panic::unwind_safe::AssertUnwindSafe<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}::{closure#0}>>
        27: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<<rustc_middle::ty::context::GlobalCtxt>::enter<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}, core::option::Option<rustc_interface::queries::Linker>>::{closure#1}, core::option::Option<rustc_interface::queries::Linker>>::{closure#0}, core::option::Option<rustc_interface::queries::Linker>>
        28: <rustc_middle::ty::context::TyCtxt>::create_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}>
        29: rustc_interface::passes::create_and_enter_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>
        30: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}::{closure#0}>>
        31: rustc_interface::interface::run_compiler::<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}
        32: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}::{closure#0}, ()>
        33: std::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
        34: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1}::{closure#0}>>
        35: <std::thread::lifecycle::spawn_unchecked<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
        36: <std::sys::thread::unix::Thread>::new::thread_start
        37: <unknown>
        38: <unknown>
      
  --> /checkout/tests/ui/drop/drop_order.rs:252:1
   |
LL | }
   | ^

error: internal compiler error: broken MIR in Item(DefId(0:23 ~ drop_order[ca1a]::main)) (after pass MoveElimination) at bb26[0]:
                                use of local _21, which has no storage here
  --> /checkout/tests/ui/drop/drop_order.rs:252:1
   |
LL | }
   | ^
   |
note: delayed at compiler/rustc_mir_transform/src/lint.rs:80:22
         0: <std::backtrace::Backtrace>::create
         1: <rustc_errors::DiagCtxtInner>::emit_diagnostic
         2: <rustc_errors::DiagCtxtHandle>::emit_diagnostic
         3: <rustc_errors::diagnostic::Diag>::emit_producing_error_guaranteed
         4: <rustc_errors::DiagCtxtHandle>::span_delayed_bug::<rustc_span::span_encoding::Span, alloc::string::String>
         5: <rustc_mir_transform::lint::Lint>::fail::<alloc::string::String>
         6: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_local
         7: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_place
         8: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_terminator
         9: rustc_mir_transform::lint::lint_body
        10: rustc_mir_transform::pass_manager::run_passes_inner
        11: rustc_mir_transform::run_optimization_passes
        12: rustc_mir_transform::optimized_mir
        13: rustc_query_impl::query_impl::optimized_mir::invoke_provider_fn::__rust_begin_short_backtrace
        14: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<rustc_query_impl::execution::execute_job_non_incr<rustc_middle::query::caches::DefIdCache<rustc_middle::query::erase::ErasedData<[u8; 8]>>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 8]>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 8]>>
        15: rustc_query_impl::execution::try_execute_query::<rustc_middle::query::caches::DefIdCache<rustc_middle::query::erase::ErasedData<[u8; 8]>>, false>
        16: rustc_query_impl::query_impl::optimized_mir::execute_query_non_incr::__rust_end_short_backtrace
        17: <rustc_middle::ty::context::TyCtxt>::instance_mir
        18: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_data_structures::sync::parallel::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners<rustc_interface::passes::analysis::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#1}::{closure#0}>>
        19: rustc_data_structures::sync::parallel::par_for_each_in::<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners<rustc_interface::passes::analysis::{closure#1}::{closure#0}>::{closure#0}>
        20: <rustc_session::session::Session>::time::<(), rustc_interface::passes::analysis::{closure#1}>
        21: rustc_interface::passes::analysis
        22: rustc_query_impl::query_impl::analysis::invoke_provider_fn::__rust_begin_short_backtrace
        23: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<rustc_query_impl::execution::execute_job_non_incr<rustc_middle::query::caches::SingleCache<rustc_middle::query::erase::ErasedData<[u8; 0]>>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 0]>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 0]>>
        24: rustc_query_impl::execution::try_execute_query::<rustc_middle::query::caches::SingleCache<rustc_middle::query::erase::ErasedData<[u8; 0]>>, false>
        25: rustc_query_impl::query_impl::analysis::execute_query_non_incr::__rust_end_short_backtrace
        26: std::panicking::catch_unwind::<core::option::Option<rustc_interface::queries::Linker>, core::panic::unwind_safe::AssertUnwindSafe<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}::{closure#0}>>
        27: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<<rustc_middle::ty::context::GlobalCtxt>::enter<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}, core::option::Option<rustc_interface::queries::Linker>>::{closure#1}, core::option::Option<rustc_interface::queries::Linker>>::{closure#0}, core::option::Option<rustc_interface::queries::Linker>>
        28: <rustc_middle::ty::context::TyCtxt>::create_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}>
        29: rustc_interface::passes::create_and_enter_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>
        30: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}::{closure#0}>>
        31: rustc_interface::interface::run_compiler::<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}
        32: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}::{closure#0}, ()>
        33: std::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
        34: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1}::{closure#0}>>
        35: <std::thread::lifecycle::spawn_unchecked<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
        36: <std::sys::thread::unix::Thread>::new::thread_start
        37: <unknown>
        38: <unknown>
      
  --> /checkout/tests/ui/drop/drop_order.rs:252:1
   |
LL | }
   | ^

error: internal compiler error: broken MIR in Item(DefId(0:23 ~ drop_order[ca1a]::main)) (after pass MoveElimination) at bb24[0]:
                                use of local _28, which has no storage here
  --> /checkout/tests/ui/drop/drop_order.rs:252:1
   |
LL | }
   | ^
   |
note: delayed at compiler/rustc_mir_transform/src/lint.rs:80:22
         0: <std::backtrace::Backtrace>::create
         1: <rustc_errors::DiagCtxtInner>::emit_diagnostic
         2: <rustc_errors::DiagCtxtHandle>::emit_diagnostic
         3: <rustc_errors::diagnostic::Diag>::emit_producing_error_guaranteed
         4: <rustc_errors::DiagCtxtHandle>::span_delayed_bug::<rustc_span::span_encoding::Span, alloc::string::String>
         5: <rustc_mir_transform::lint::Lint>::fail::<alloc::string::String>
         6: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_local
         7: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_place
         8: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_terminator
         9: rustc_mir_transform::lint::lint_body
        10: rustc_mir_transform::pass_manager::run_passes_inner
        11: rustc_mir_transform::run_optimization_passes
        12: rustc_mir_transform::optimized_mir
        13: rustc_query_impl::query_impl::optimized_mir::invoke_provider_fn::__rust_begin_short_backtrace
        14: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<rustc_query_impl::execution::execute_job_non_incr<rustc_middle::query::caches::DefIdCache<rustc_middle::query::erase::ErasedData<[u8; 8]>>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 8]>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 8]>>
        15: rustc_query_impl::execution::try_execute_query::<rustc_middle::query::caches::DefIdCache<rustc_middle::query::erase::ErasedData<[u8; 8]>>, false>
        16: rustc_query_impl::query_impl::optimized_mir::execute_query_non_incr::__rust_end_short_backtrace
        17: <rustc_middle::ty::context::TyCtxt>::instance_mir
        18: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_data_structures::sync::parallel::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners<rustc_interface::passes::analysis::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#1}::{closure#0}>>
        19: rustc_data_structures::sync::parallel::par_for_each_in::<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners<rustc_interface::passes::analysis::{closure#1}::{closure#0}>::{closure#0}>
        20: <rustc_session::session::Session>::time::<(), rustc_interface::passes::analysis::{closure#1}>
        21: rustc_interface::passes::analysis
        22: rustc_query_impl::query_impl::analysis::invoke_provider_fn::__rust_begin_short_backtrace
        23: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<rustc_query_impl::execution::execute_job_non_incr<rustc_middle::query::caches::SingleCache<rustc_middle::query::erase::ErasedData<[u8; 0]>>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 0]>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 0]>>
        24: rustc_query_impl::execution::try_execute_query::<rustc_middle::query::caches::SingleCache<rustc_middle::query::erase::ErasedData<[u8; 0]>>, false>
        25: rustc_query_impl::query_impl::analysis::execute_query_non_incr::__rust_end_short_backtrace
        26: std::panicking::catch_unwind::<core::option::Option<rustc_interface::queries::Linker>, core::panic::unwind_safe::AssertUnwindSafe<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}::{closure#0}>>
        27: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<<rustc_middle::ty::context::GlobalCtxt>::enter<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}, core::option::Option<rustc_interface::queries::Linker>>::{closure#1}, core::option::Option<rustc_interface::queries::Linker>>::{closure#0}, core::option::Option<rustc_interface::queries::Linker>>
        28: <rustc_middle::ty::context::TyCtxt>::create_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}>
        29: rustc_interface::passes::create_and_enter_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>
        30: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}::{closure#0}>>
        31: rustc_interface::interface::run_compiler::<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}
        32: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}::{closure#0}, ()>
        33: std::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
        34: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1}::{closure#0}>>
        35: <std::thread::lifecycle::spawn_unchecked<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
        36: <std::sys::thread::unix::Thread>::new::thread_start
        37: <unknown>
        38: <unknown>
      
  --> /checkout/tests/ui/drop/drop_order.rs:252:1
   |
LL | }
   | ^

error: internal compiler error: broken MIR in Item(DefId(0:23 ~ drop_order[ca1a]::main)) (after pass MoveElimination) at bb22[0]:
                                use of local _35, which has no storage here
  --> /checkout/tests/ui/drop/drop_order.rs:252:1
   |
LL | }
   | ^
   |
note: delayed at compiler/rustc_mir_transform/src/lint.rs:80:22
         0: <std::backtrace::Backtrace>::create
         1: <rustc_errors::DiagCtxtInner>::emit_diagnostic
         2: <rustc_errors::DiagCtxtHandle>::emit_diagnostic
         3: <rustc_errors::diagnostic::Diag>::emit_producing_error_guaranteed
         4: <rustc_errors::DiagCtxtHandle>::span_delayed_bug::<rustc_span::span_encoding::Span, alloc::string::String>
         5: <rustc_mir_transform::lint::Lint>::fail::<alloc::string::String>
         6: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_local
         7: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_place
         8: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_terminator
         9: rustc_mir_transform::lint::lint_body
        10: rustc_mir_transform::pass_manager::run_passes_inner
        11: rustc_mir_transform::run_optimization_passes
        12: rustc_mir_transform::optimized_mir
        13: rustc_query_impl::query_impl::optimized_mir::invoke_provider_fn::__rust_begin_short_backtrace
        14: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<rustc_query_impl::execution::execute_job_non_incr<rustc_middle::query::caches::DefIdCache<rustc_middle::query::erase::ErasedData<[u8; 8]>>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 8]>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 8]>>
        15: rustc_query_impl::execution::try_execute_query::<rustc_middle::query::caches::DefIdCache<rustc_middle::query::erase::ErasedData<[u8; 8]>>, false>
        16: rustc_query_impl::query_impl::optimized_mir::execute_query_non_incr::__rust_end_short_backtrace
        17: <rustc_middle::ty::context::TyCtxt>::instance_mir
        18: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_data_structures::sync::parallel::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners<rustc_interface::passes::analysis::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#1}::{closure#0}>>
        19: rustc_data_structures::sync::parallel::par_for_each_in::<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners<rustc_interface::passes::analysis::{closure#1}::{closure#0}>::{closure#0}>
        20: <rustc_session::session::Session>::time::<(), rustc_interface::passes::analysis::{closure#1}>
        21: rustc_interface::passes::analysis
        22: rustc_query_impl::query_impl::analysis::invoke_provider_fn::__rust_begin_short_backtrace
        23: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<rustc_query_impl::execution::execute_job_non_incr<rustc_middle::query::caches::SingleCache<rustc_middle::query::erase::ErasedData<[u8; 0]>>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 0]>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 0]>>
        24: rustc_query_impl::execution::try_execute_query::<rustc_middle::query::caches::SingleCache<rustc_middle::query::erase::ErasedData<[u8; 0]>>, false>
        25: rustc_query_impl::query_impl::analysis::execute_query_non_incr::__rust_end_short_backtrace
        26: std::panicking::catch_unwind::<core::option::Option<rustc_interface::queries::Linker>, core::panic::unwind_safe::AssertUnwindSafe<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}::{closure#0}>>
        27: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<<rustc_middle::ty::context::GlobalCtxt>::enter<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}, core::option::Option<rustc_interface::queries::Linker>>::{closure#1}, core::option::Option<rustc_interface::queries::Linker>>::{closure#0}, core::option::Option<rustc_interface::queries::Linker>>
        28: <rustc_middle::ty::context::TyCtxt>::create_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}>
        29: rustc_interface::passes::create_and_enter_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>
        30: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}::{closure#0}>>
        31: rustc_interface::interface::run_compiler::<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}
        32: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}::{closure#0}, ()>
        33: std::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
        34: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1}::{closure#0}>>
        35: <std::thread::lifecycle::spawn_unchecked<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
        36: <std::sys::thread::unix::Thread>::new::thread_start
        37: <unknown>
        38: <unknown>
      
  --> /checkout/tests/ui/drop/drop_order.rs:252:1
   |
LL | }
   | ^

error: internal compiler error: broken MIR in Item(DefId(0:23 ~ drop_order[ca1a]::main)) (after pass SimplifyLocals-final) at bb30[0]:
                                use of local _6, which has no storage here
  --> /checkout/tests/ui/drop/drop_order.rs:252:1
   |
LL | }
   | ^
   |
note: delayed at compiler/rustc_mir_transform/src/lint.rs:80:22
         0: <std::backtrace::Backtrace>::create
         1: <rustc_errors::DiagCtxtInner>::emit_diagnostic
         2: <rustc_errors::DiagCtxtHandle>::emit_diagnostic
         3: <rustc_errors::diagnostic::Diag>::emit_producing_error_guaranteed
         4: <rustc_errors::DiagCtxtHandle>::span_delayed_bug::<rustc_span::span_encoding::Span, alloc::string::String>
         5: <rustc_mir_transform::lint::Lint>::fail::<alloc::string::String>
         6: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_local
         7: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_place
         8: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_terminator
         9: rustc_mir_transform::lint::lint_body
        10: rustc_mir_transform::pass_manager::run_passes_inner
        11: rustc_mir_transform::run_optimization_passes
        12: rustc_mir_transform::optimized_mir
        13: rustc_query_impl::query_impl::optimized_mir::invoke_provider_fn::__rust_begin_short_backtrace
        14: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<rustc_query_impl::execution::execute_job_non_incr<rustc_middle::query::caches::DefIdCache<rustc_middle::query::erase::ErasedData<[u8; 8]>>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 8]>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 8]>>
        15: rustc_query_impl::execution::try_execute_query::<rustc_middle::query::caches::DefIdCache<rustc_middle::query::erase::ErasedData<[u8; 8]>>, false>
        16: rustc_query_impl::query_impl::optimized_mir::execute_query_non_incr::__rust_end_short_backtrace
        17: <rustc_middle::ty::context::TyCtxt>::instance_mir
        18: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_data_structures::sync::parallel::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners<rustc_interface::passes::analysis::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#1}::{closure#0}>>
        19: rustc_data_structures::sync::parallel::par_for_each_in::<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners<rustc_interface::passes::analysis::{closure#1}::{closure#0}>::{closure#0}>
        20: <rustc_session::session::Session>::time::<(), rustc_interface::passes::analysis::{closure#1}>
        21: rustc_interface::passes::analysis
        22: rustc_query_impl::query_impl::analysis::invoke_provider_fn::__rust_begin_short_backtrace
        23: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<rustc_query_impl::execution::execute_job_non_incr<rustc_middle::query::caches::SingleCache<rustc_middle::query::erase::ErasedData<[u8; 0]>>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 0]>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 0]>>
        24: rustc_query_impl::execution::try_execute_query::<rustc_middle::query::caches::SingleCache<rustc_middle::query::erase::ErasedData<[u8; 0]>>, false>
        25: rustc_query_impl::query_impl::analysis::execute_query_non_incr::__rust_end_short_backtrace
        26: std::panicking::catch_unwind::<core::option::Option<rustc_interface::queries::Linker>, core::panic::unwind_safe::AssertUnwindSafe<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}::{closure#0}>>
        27: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<<rustc_middle::ty::context::GlobalCtxt>::enter<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}, core::option::Option<rustc_interface::queries::Linker>>::{closure#1}, core::option::Option<rustc_interface::queries::Linker>>::{closure#0}, core::option::Option<rustc_interface::queries::Linker>>
        28: <rustc_middle::ty::context::TyCtxt>::create_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}>
        29: rustc_interface::passes::create_and_enter_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>
        30: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}::{closure#0}>>
        31: rustc_interface::interface::run_compiler::<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}
        32: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}::{closure#0}, ()>
        33: std::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
        34: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1}::{closure#0}>>
        35: <std::thread::lifecycle::spawn_unchecked<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
        36: <std::sys::thread::unix::Thread>::new::thread_start
        37: <unknown>
        38: <unknown>
      
  --> /checkout/tests/ui/drop/drop_order.rs:252:1
   |
LL | }
   | ^

error: internal compiler error: broken MIR in Item(DefId(0:23 ~ drop_order[ca1a]::main)) (after pass SimplifyLocals-final) at bb28[0]:
                                use of local _12, which has no storage here
  --> /checkout/tests/ui/drop/drop_order.rs:252:1
   |
LL | }
   | ^
   |
note: delayed at compiler/rustc_mir_transform/src/lint.rs:80:22
         0: <std::backtrace::Backtrace>::create
         1: <rustc_errors::DiagCtxtInner>::emit_diagnostic
         2: <rustc_errors::DiagCtxtHandle>::emit_diagnostic
         3: <rustc_errors::diagnostic::Diag>::emit_producing_error_guaranteed
         4: <rustc_errors::DiagCtxtHandle>::span_delayed_bug::<rustc_span::span_encoding::Span, alloc::string::String>
         5: <rustc_mir_transform::lint::Lint>::fail::<alloc::string::String>
         6: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_local
         7: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_place
         8: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_terminator
         9: rustc_mir_transform::lint::lint_body
        10: rustc_mir_transform::pass_manager::run_passes_inner
        11: rustc_mir_transform::run_optimization_passes
        12: rustc_mir_transform::optimized_mir
        13: rustc_query_impl::query_impl::optimized_mir::invoke_provider_fn::__rust_begin_short_backtrace
        14: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<rustc_query_impl::execution::execute_job_non_incr<rustc_middle::query::caches::DefIdCache<rustc_middle::query::erase::ErasedData<[u8; 8]>>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 8]>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 8]>>
        15: rustc_query_impl::execution::try_execute_query::<rustc_middle::query::caches::DefIdCache<rustc_middle::query::erase::ErasedData<[u8; 8]>>, false>
        16: rustc_query_impl::query_impl::optimized_mir::execute_query_non_incr::__rust_end_short_backtrace
        17: <rustc_middle::ty::context::TyCtxt>::instance_mir
        18: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_data_structures::sync::parallel::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners<rustc_interface::passes::analysis::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#1}::{closure#0}>>
        19: rustc_data_structures::sync::parallel::par_for_each_in::<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners<rustc_interface::passes::analysis::{closure#1}::{closure#0}>::{closure#0}>
        20: <rustc_session::session::Session>::time::<(), rustc_interface::passes::analysis::{closure#1}>
        21: rustc_interface::passes::analysis
        22: rustc_query_impl::query_impl::analysis::invoke_provider_fn::__rust_begin_short_backtrace
        23: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<rustc_query_impl::execution::execute_job_non_incr<rustc_middle::query::caches::SingleCache<rustc_middle::query::erase::ErasedData<[u8; 0]>>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 0]>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 0]>>
        24: rustc_query_impl::execution::try_execute_query::<rustc_middle::query::caches::SingleCache<rustc_middle::query::erase::ErasedData<[u8; 0]>>, false>
        25: rustc_query_impl::query_impl::analysis::execute_query_non_incr::__rust_end_short_backtrace
        26: std::panicking::catch_unwind::<core::option::Option<rustc_interface::queries::Linker>, core::panic::unwind_safe::AssertUnwindSafe<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}::{closure#0}>>
        27: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<<rustc_middle::ty::context::GlobalCtxt>::enter<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}, core::option::Option<rustc_interface::queries::Linker>>::{closure#1}, core::option::Option<rustc_interface::queries::Linker>>::{closure#0}, core::option::Option<rustc_interface::queries::Linker>>
        28: <rustc_middle::ty::context::TyCtxt>::create_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}>
        29: rustc_interface::passes::create_and_enter_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>
        30: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}::{closure#0}>>
        31: rustc_interface::interface::run_compiler::<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}
        32: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}::{closure#0}, ()>
        33: std::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
        34: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1}::{closure#0}>>
        35: <std::thread::lifecycle::spawn_unchecked<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
        36: <std::sys::thread::unix::Thread>::new::thread_start
        37: <unknown>
        38: <unknown>
      
  --> /checkout/tests/ui/drop/drop_order.rs:252:1
   |
LL | }
   | ^

error: internal compiler error: broken MIR in Item(DefId(0:23 ~ drop_order[ca1a]::main)) (after pass SimplifyLocals-final) at bb26[0]:
                                use of local _18, which has no storage here
  --> /checkout/tests/ui/drop/drop_order.rs:252:1
   |
LL | }
   | ^
   |
note: delayed at compiler/rustc_mir_transform/src/lint.rs:80:22
         0: <std::backtrace::Backtrace>::create
         1: <rustc_errors::DiagCtxtInner>::emit_diagnostic
         2: <rustc_errors::DiagCtxtHandle>::emit_diagnostic
         3: <rustc_errors::diagnostic::Diag>::emit_producing_error_guaranteed
         4: <rustc_errors::DiagCtxtHandle>::span_delayed_bug::<rustc_span::span_encoding::Span, alloc::string::String>
         5: <rustc_mir_transform::lint::Lint>::fail::<alloc::string::String>
         6: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_local
         7: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_place
         8: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_terminator
         9: rustc_mir_transform::lint::lint_body
        10: rustc_mir_transform::pass_manager::run_passes_inner
        11: rustc_mir_transform::run_optimization_passes
        12: rustc_mir_transform::optimized_mir
        13: rustc_query_impl::query_impl::optimized_mir::invoke_provider_fn::__rust_begin_short_backtrace
        14: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<rustc_query_impl::execution::execute_job_non_incr<rustc_middle::query::caches::DefIdCache<rustc_middle::query::erase::ErasedData<[u8; 8]>>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 8]>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 8]>>
        15: rustc_query_impl::execution::try_execute_query::<rustc_middle::query::caches::DefIdCache<rustc_middle::query::erase::ErasedData<[u8; 8]>>, false>
        16: rustc_query_impl::query_impl::optimized_mir::execute_query_non_incr::__rust_end_short_backtrace
        17: <rustc_middle::ty::context::TyCtxt>::instance_mir
        18: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_data_structures::sync::parallel::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners<rustc_interface::passes::analysis::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#1}::{closure#0}>>
        19: rustc_data_structures::sync::parallel::par_for_each_in::<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners<rustc_interface::passes::analysis::{closure#1}::{closure#0}>::{closure#0}>
        20: <rustc_session::session::Session>::time::<(), rustc_interface::passes::analysis::{closure#1}>
        21: rustc_interface::passes::analysis
        22: rustc_query_impl::query_impl::analysis::invoke_provider_fn::__rust_begin_short_backtrace
        23: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<rustc_query_impl::execution::execute_job_non_incr<rustc_middle::query::caches::SingleCache<rustc_middle::query::erase::ErasedData<[u8; 0]>>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 0]>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 0]>>
        24: rustc_query_impl::execution::try_execute_query::<rustc_middle::query::caches::SingleCache<rustc_middle::query::erase::ErasedData<[u8; 0]>>, false>
        25: rustc_query_impl::query_impl::analysis::execute_query_non_incr::__rust_end_short_backtrace
        26: std::panicking::catch_unwind::<core::option::Option<rustc_interface::queries::Linker>, core::panic::unwind_safe::AssertUnwindSafe<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}::{closure#0}>>
        27: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<<rustc_middle::ty::context::GlobalCtxt>::enter<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}, core::option::Option<rustc_interface::queries::Linker>>::{closure#1}, core::option::Option<rustc_interface::queries::Linker>>::{closure#0}, core::option::Option<rustc_interface::queries::Linker>>
        28: <rustc_middle::ty::context::TyCtxt>::create_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}>
        29: rustc_interface::passes::create_and_enter_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>
        30: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}::{closure#0}>>
        31: rustc_interface::interface::run_compiler::<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}
        32: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}::{closure#0}, ()>
        33: std::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
        34: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1}::{closure#0}>>
        35: <std::thread::lifecycle::spawn_unchecked<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
        36: <std::sys::thread::unix::Thread>::new::thread_start
        37: <unknown>
        38: <unknown>
      
  --> /checkout/tests/ui/drop/drop_order.rs:252:1
   |
LL | }
   | ^

error: internal compiler error: broken MIR in Item(DefId(0:23 ~ drop_order[ca1a]::main)) (after pass SimplifyLocals-final) at bb24[0]:
                                use of local _24, which has no storage here
  --> /checkout/tests/ui/drop/drop_order.rs:252:1
   |
LL | }
   | ^
   |
note: delayed at compiler/rustc_mir_transform/src/lint.rs:80:22
         0: <std::backtrace::Backtrace>::create
         1: <rustc_errors::DiagCtxtInner>::emit_diagnostic
         2: <rustc_errors::DiagCtxtHandle>::emit_diagnostic
         3: <rustc_errors::diagnostic::Diag>::emit_producing_error_guaranteed
         4: <rustc_errors::DiagCtxtHandle>::span_delayed_bug::<rustc_span::span_encoding::Span, alloc::string::String>
         5: <rustc_mir_transform::lint::Lint>::fail::<alloc::string::String>
         6: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_local
         7: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_place
         8: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_terminator
         9: rustc_mir_transform::lint::lint_body
        10: rustc_mir_transform::pass_manager::run_passes_inner
        11: rustc_mir_transform::run_optimization_passes
        12: rustc_mir_transform::optimized_mir
        13: rustc_query_impl::query_impl::optimized_mir::invoke_provider_fn::__rust_begin_short_backtrace
        14: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<rustc_query_impl::execution::execute_job_non_incr<rustc_middle::query::caches::DefIdCache<rustc_middle::query::erase::ErasedData<[u8; 8]>>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 8]>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 8]>>
        15: rustc_query_impl::execution::try_execute_query::<rustc_middle::query::caches::DefIdCache<rustc_middle::query::erase::ErasedData<[u8; 8]>>, false>
        16: rustc_query_impl::query_impl::optimized_mir::execute_query_non_incr::__rust_end_short_backtrace
        17: <rustc_middle::ty::context::TyCtxt>::instance_mir
        18: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_data_structures::sync::parallel::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners<rustc_interface::passes::analysis::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#1}::{closure#0}>>
        19: rustc_data_structures::sync::parallel::par_for_each_in::<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners<rustc_interface::passes::analysis::{closure#1}::{closure#0}>::{closure#0}>
        20: <rustc_session::session::Session>::time::<(), rustc_interface::passes::analysis::{closure#1}>
        21: rustc_interface::passes::analysis
        22: rustc_query_impl::query_impl::analysis::invoke_provider_fn::__rust_begin_short_backtrace
        23: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<rustc_query_impl::execution::execute_job_non_incr<rustc_middle::query::caches::SingleCache<rustc_middle::query::erase::ErasedData<[u8; 0]>>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 0]>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 0]>>
        24: rustc_query_impl::execution::try_execute_query::<rustc_middle::query::caches::SingleCache<rustc_middle::query::erase::ErasedData<[u8; 0]>>, false>
        25: rustc_query_impl::query_impl::analysis::execute_query_non_incr::__rust_end_short_backtrace
        26: std::panicking::catch_unwind::<core::option::Option<rustc_interface::queries::Linker>, core::panic::unwind_safe::AssertUnwindSafe<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}::{closure#0}>>
        27: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<<rustc_middle::ty::context::GlobalCtxt>::enter<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}, core::option::Option<rustc_interface::queries::Linker>>::{closure#1}, core::option::Option<rustc_interface::queries::Linker>>::{closure#0}, core::option::Option<rustc_interface::queries::Linker>>
        28: <rustc_middle::ty::context::TyCtxt>::create_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}>
        29: rustc_interface::passes::create_and_enter_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>
        30: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}::{closure#0}>>
        31: rustc_interface::interface::run_compiler::<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}
        32: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}::{closure#0}, ()>
        33: std::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
        34: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1}::{closure#0}>>
        35: <std::thread::lifecycle::spawn_unchecked<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
        36: <std::sys::thread::unix::Thread>::new::thread_start
        37: <unknown>
        38: <unknown>
      
  --> /checkout/tests/ui/drop/drop_order.rs:252:1
   |
LL | }
   | ^

error: internal compiler error: broken MIR in Item(DefId(0:23 ~ drop_order[ca1a]::main)) (after pass SimplifyLocals-final) at bb22[0]:
                                use of local _30, which has no storage here
  --> /checkout/tests/ui/drop/drop_order.rs:252:1
   |
LL | }
   | ^
   |
note: delayed at compiler/rustc_mir_transform/src/lint.rs:80:22
         0: <std::backtrace::Backtrace>::create
         1: <rustc_errors::DiagCtxtInner>::emit_diagnostic
         2: <rustc_errors::DiagCtxtHandle>::emit_diagnostic
         3: <rustc_errors::diagnostic::Diag>::emit_producing_error_guaranteed
---
note: please make sure that you have updated to the latest nightly

note: rustc 1.97.0-nightly (e8443b1ba 2026-05-20) running on aarch64-unknown-linux-gnu

note: compiler flags: -Z threads=1 -Z simulate-remapped-rust-src-base=/rustc/FAKE_PREFIX -Z translate-remapped-path-to-local-path=no -Z ignore-directory-in-diagnostics-source-blocks=/cargo -Z ignore-directory-in-diagnostics-source-blocks=/checkout/vendor -C codegen-units=1 -Z ui-testing -Z deduplicate-diagnostics=no -Z write-long-types-to-disk=no -C strip=debuginfo -C prefer-dynamic -C rpath -C debuginfo=0 -Z validate-mir -Z lint-mir

query stack during panic:
end of query stack
------------------------------------------

---- [ui] tests/ui/drop/drop_order.rs#edition2024 stdout end ----
---- [ui] tests/ui/drop/drop_order_if_let_rescope.rs stdout ----

error: test compilation failed although it shouldn't!
status: exit status: 101
command: env -u RUSTC_LOG_COLOR RUSTC_ICE="0" RUST_BACKTRACE="short" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2/bin/rustc" "/checkout/tests/ui/drop/drop_order_if_let_rescope.rs" "-Zthreads=1" "-Zsimulate-remapped-rust-src-base=/rustc/FAKE_PREFIX" "-Ztranslate-remapped-path-to-local-path=no" "-Z" "ignore-directory-in-diagnostics-source-blocks=/cargo" "-Z" "ignore-directory-in-diagnostics-source-blocks=/checkout/vendor" "--sysroot" "/checkout/obj/build/aarch64-unknown-linux-gnu/stage2" "--target=aarch64-unknown-linux-gnu" "--check-cfg" "cfg(test,FALSE)" "-O" "--error-format" "json" "--json" "future-incompat" "-Ccodegen-units=1" "-Zui-testing" "-Zdeduplicate-diagnostics=no" "-Zwrite-long-types-to-disk=no" "-Cstrip=debuginfo" "-C" "prefer-dynamic" "-o" "/checkout/obj/build/aarch64-unknown-linux-gnu/test/ui/drop/drop_order_if_let_rescope/a" "-A" "internal_features" "-A" "incomplete_features" "-A" "unused_parens" "-A" "unused_braces" "-Crpath" "-Cdebuginfo=0" "-Lnative=/checkout/obj/build/aarch64-unknown-linux-gnu/native/rust-test-helpers" "--edition=2024" "-Z" "validate-mir" "-Z" "lint-mir"
stdout: none
--- stderr -------------------------------
note: no errors encountered even though delayed bugs were created

note: those delayed bugs will now be shown as internal compiler errors

error: internal compiler error: broken MIR in Item(DefId(0:18 ~ drop_order_if_let_rescope[b603]::main)) (after pass MoveElimination) at bb10[0]:
                                use of local _7, which has no storage here
  --> /checkout/tests/ui/drop/drop_order_if_let_rescope.rs:119:1
   |
LL | }
   | ^
   |
note: delayed at compiler/rustc_mir_transform/src/lint.rs:80:22
         0: <std::backtrace::Backtrace>::create
         1: <rustc_errors::DiagCtxtInner>::emit_diagnostic
         2: <rustc_errors::DiagCtxtHandle>::emit_diagnostic
         3: <rustc_errors::diagnostic::Diag>::emit_producing_error_guaranteed
         4: <rustc_errors::DiagCtxtHandle>::span_delayed_bug::<rustc_span::span_encoding::Span, alloc::string::String>
         5: <rustc_mir_transform::lint::Lint>::fail::<alloc::string::String>
         6: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_local
         7: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_place
         8: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_terminator
         9: rustc_mir_transform::lint::lint_body
        10: rustc_mir_transform::pass_manager::run_passes_inner
        11: rustc_mir_transform::run_optimization_passes
        12: rustc_mir_transform::optimized_mir
        13: rustc_query_impl::query_impl::optimized_mir::invoke_provider_fn::__rust_begin_short_backtrace
        14: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<rustc_query_impl::execution::execute_job_non_incr<rustc_middle::query::caches::DefIdCache<rustc_middle::query::erase::ErasedData<[u8; 8]>>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 8]>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 8]>>
        15: rustc_query_impl::execution::try_execute_query::<rustc_middle::query::caches::DefIdCache<rustc_middle::query::erase::ErasedData<[u8; 8]>>, false>
        16: rustc_query_impl::query_impl::optimized_mir::execute_query_non_incr::__rust_end_short_backtrace
        17: <rustc_middle::ty::context::TyCtxt>::instance_mir
        18: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_data_structures::sync::parallel::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners<rustc_interface::passes::analysis::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#1}::{closure#0}>>
        19: rustc_data_structures::sync::parallel::par_for_each_in::<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners<rustc_interface::passes::analysis::{closure#1}::{closure#0}>::{closure#0}>
        20: <rustc_session::session::Session>::time::<(), rustc_interface::passes::analysis::{closure#1}>
        21: rustc_interface::passes::analysis
        22: rustc_query_impl::query_impl::analysis::invoke_provider_fn::__rust_begin_short_backtrace
        23: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<rustc_query_impl::execution::execute_job_non_incr<rustc_middle::query::caches::SingleCache<rustc_middle::query::erase::ErasedData<[u8; 0]>>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 0]>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 0]>>
        24: rustc_query_impl::execution::try_execute_query::<rustc_middle::query::caches::SingleCache<rustc_middle::query::erase::ErasedData<[u8; 0]>>, false>
        25: rustc_query_impl::query_impl::analysis::execute_query_non_incr::__rust_end_short_backtrace
        26: std::panicking::catch_unwind::<core::option::Option<rustc_interface::queries::Linker>, core::panic::unwind_safe::AssertUnwindSafe<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}::{closure#0}>>
        27: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<<rustc_middle::ty::context::GlobalCtxt>::enter<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}, core::option::Option<rustc_interface::queries::Linker>>::{closure#1}, core::option::Option<rustc_interface::queries::Linker>>::{closure#0}, core::option::Option<rustc_interface::queries::Linker>>
        28: <rustc_middle::ty::context::TyCtxt>::create_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}>
        29: rustc_interface::passes::create_and_enter_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>
        30: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}::{closure#0}>>
        31: rustc_interface::interface::run_compiler::<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}
        32: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}::{closure#0}, ()>
        33: std::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
        34: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1}::{closure#0}>>
        35: <std::thread::lifecycle::spawn_unchecked<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
        36: <std::sys::thread::unix::Thread>::new::thread_start
        37: <unknown>
        38: <unknown>
      
  --> /checkout/tests/ui/drop/drop_order_if_let_rescope.rs:119:1
   |
LL | }
   | ^

error: internal compiler error: broken MIR in Item(DefId(0:18 ~ drop_order_if_let_rescope[b603]::main)) (after pass SimplifyLocals-final) at bb10[0]:
                                use of local _6, which has no storage here
  --> /checkout/tests/ui/drop/drop_order_if_let_rescope.rs:119:1
   |
LL | }
   | ^
   |
note: delayed at compiler/rustc_mir_transform/src/lint.rs:80:22
         0: <std::backtrace::Backtrace>::create
         1: <rustc_errors::DiagCtxtInner>::emit_diagnostic
         2: <rustc_errors::DiagCtxtHandle>::emit_diagnostic
         3: <rustc_errors::diagnostic::Diag>::emit_producing_error_guaranteed
         4: <rustc_errors::DiagCtxtHandle>::span_delayed_bug::<rustc_span::span_encoding::Span, alloc::string::String>
         5: <rustc_mir_transform::lint::Lint>::fail::<alloc::string::String>
         6: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_local
         7: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_place
         8: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_terminator
         9: rustc_mir_transform::lint::lint_body
        10: rustc_mir_transform::pass_manager::run_passes_inner
        11: rustc_mir_transform::run_optimization_passes
        12: rustc_mir_transform::optimized_mir
        13: rustc_query_impl::query_impl::optimized_mir::invoke_provider_fn::__rust_begin_short_backtrace
        14: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<rustc_query_impl::execution::execute_job_non_incr<rustc_middle::query::caches::DefIdCache<rustc_middle::query::erase::ErasedData<[u8; 8]>>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 8]>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 8]>>
        15: rustc_query_impl::execution::try_execute_query::<rustc_middle::query::caches::DefIdCache<rustc_middle::query::erase::ErasedData<[u8; 8]>>, false>
        16: rustc_query_impl::query_impl::optimized_mir::execute_query_non_incr::__rust_end_short_backtrace
        17: <rustc_middle::ty::context::TyCtxt>::instance_mir
        18: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_data_structures::sync::parallel::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners<rustc_interface::passes::analysis::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#1}::{closure#0}>>
        19: rustc_data_structures::sync::parallel::par_for_each_in::<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners<rustc_interface::passes::analysis::{closure#1}::{closure#0}>::{closure#0}>
        20: <rustc_session::session::Session>::time::<(), rustc_interface::passes::analysis::{closure#1}>
        21: rustc_interface::passes::analysis
        22: rustc_query_impl::query_impl::analysis::invoke_provider_fn::__rust_begin_short_backtrace
        23: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<rustc_query_impl::execution::execute_job_non_incr<rustc_middle::query::caches::SingleCache<rustc_middle::query::erase::ErasedData<[u8; 0]>>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 0]>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 0]>>
        24: rustc_query_impl::execution::try_execute_query::<rustc_middle::query::caches::SingleCache<rustc_middle::query::erase::ErasedData<[u8; 0]>>, false>
        25: rustc_query_impl::query_impl::analysis::execute_query_non_incr::__rust_end_short_backtrace
        26: std::panicking::catch_unwind::<core::option::Option<rustc_interface::queries::Linker>, core::panic::unwind_safe::AssertUnwindSafe<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}::{closure#0}>>
        27: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<<rustc_middle::ty::context::GlobalCtxt>::enter<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}, core::option::Option<rustc_interface::queries::Linker>>::{closure#1}, core::option::Option<rustc_interface::queries::Linker>>::{closure#0}, core::option::Option<rustc_interface::queries::Linker>>
        28: <rustc_middle::ty::context::TyCtxt>::create_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}>
        29: rustc_interface::passes::create_and_enter_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>
        30: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}::{closure#0}>>
        31: rustc_interface::interface::run_compiler::<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}
        32: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}::{closure#0}, ()>
        33: std::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
        34: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1}::{closure#0}>>
        35: <std::thread::lifecycle::spawn_unchecked<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
        36: <std::sys::thread::unix::Thread>::new::thread_start
        37: <unknown>
        38: <unknown>
      
  --> /checkout/tests/ui/drop/drop_order_if_let_rescope.rs:119:1
   |
LL | }
   | ^

error: internal compiler error: broken MIR in Item(DefId(0:18 ~ drop_order_if_let_rescope[b603]::main)) (after pass AddCallGuards) at bb10[0]:
                                use of local _6, which has no storage here
  --> /checkout/tests/ui/drop/drop_order_if_let_rescope.rs:119:1
   |
LL | }
   | ^
   |
note: delayed at compiler/rustc_mir_transform/src/lint.rs:80:22
         0: <std::backtrace::Backtrace>::create
         1: <rustc_errors::DiagCtxtInner>::emit_diagnostic
         2: <rustc_errors::DiagCtxtHandle>::emit_diagnostic
         3: <rustc_errors::diagnostic::Diag>::emit_producing_error_guaranteed
         4: <rustc_errors::DiagCtxtHandle>::span_delayed_bug::<rustc_span::span_encoding::Span, alloc::string::String>
         5: <rustc_mir_transform::lint::Lint>::fail::<alloc::string::String>
         6: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_local
         7: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_place
         8: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_terminator
         9: rustc_mir_transform::lint::lint_body
        10: rustc_mir_transform::pass_manager::run_passes_inner
        11: rustc_mir_transform::run_optimization_passes
        12: rustc_mir_transform::optimized_mir
        13: rustc_query_impl::query_impl::optimized_mir::invoke_provider_fn::__rust_begin_short_backtrace
        14: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<rustc_query_impl::execution::execute_job_non_incr<rustc_middle::query::caches::DefIdCache<rustc_middle::query::erase::ErasedData<[u8; 8]>>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 8]>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 8]>>
        15: rustc_query_impl::execution::try_execute_query::<rustc_middle::query::caches::DefIdCache<rustc_middle::query::erase::ErasedData<[u8; 8]>>, false>
        16: rustc_query_impl::query_impl::optimized_mir::execute_query_non_incr::__rust_end_short_backtrace
        17: <rustc_middle::ty::context::TyCtxt>::instance_mir
        18: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_data_structures::sync::parallel::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners<rustc_interface::passes::analysis::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#1}::{closure#0}>>
        19: rustc_data_structures::sync::parallel::par_for_each_in::<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners<rustc_interface::passes::analysis::{closure#1}::{closure#0}>::{closure#0}>
        20: <rustc_session::session::Session>::time::<(), rustc_interface::passes::analysis::{closure#1}>
        21: rustc_interface::passes::analysis
        22: rustc_query_impl::query_impl::analysis::invoke_provider_fn::__rust_begin_short_backtrace
        23: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<rustc_query_impl::execution::execute_job_non_incr<rustc_middle::query::caches::SingleCache<rustc_middle::query::erase::ErasedData<[u8; 0]>>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 0]>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 0]>>
        24: rustc_query_impl::execution::try_execute_query::<rustc_middle::query::caches::SingleCache<rustc_middle::query::erase::ErasedData<[u8; 0]>>, false>
        25: rustc_query_impl::query_impl::analysis::execute_query_non_incr::__rust_end_short_backtrace
        26: std::panicking::catch_unwind::<core::option::Option<rustc_interface::queries::Linker>, core::panic::unwind_safe::AssertUnwindSafe<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}::{closure#0}>>
        27: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<<rustc_middle::ty::context::GlobalCtxt>::enter<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}, core::option::Option<rustc_interface::queries::Linker>>::{closure#1}, core::option::Option<rustc_interface::queries::Linker>>::{closure#0}, core::option::Option<rustc_interface::queries::Linker>>
        28: <rustc_middle::ty::context::TyCtxt>::create_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}>
        29: rustc_interface::passes::create_and_enter_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>
        30: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}::{closure#0}>>
        31: rustc_interface::interface::run_compiler::<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}
        32: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}::{closure#0}, ()>
        33: std::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
        34: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1}::{closure#0}>>
        35: <std::thread::lifecycle::spawn_unchecked<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
        36: <std::sys::thread::unix::Thread>::new::thread_start
        37: <unknown>
        38: <unknown>
      
  --> /checkout/tests/ui/drop/drop_order_if_let_rescope.rs:119:1
   |
LL | }
   | ^

error: internal compiler error: broken MIR in Item(DefId(0:18 ~ drop_order_if_let_rescope[b603]::main)) (after phase change to runtime-optimized) at bb10[0]:
                                use of local _6, which has no storage here
  --> /checkout/tests/ui/drop/drop_order_if_let_rescope.rs:119:1
   |
LL | }
   | ^
   |
note: delayed at compiler/rustc_mir_transform/src/lint.rs:80:22
         0: <std::backtrace::Backtrace>::create
         1: <rustc_errors::DiagCtxtInner>::emit_diagnostic
         2: <rustc_errors::DiagCtxtHandle>::emit_diagnostic
         3: <rustc_errors::diagnostic::Diag>::emit_producing_error_guaranteed
         4: <rustc_errors::DiagCtxtHandle>::span_delayed_bug::<rustc_span::span_encoding::Span, alloc::string::String>
         5: <rustc_mir_transform::lint::Lint>::fail::<alloc::string::String>
         6: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_local
         7: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_place
         8: <rustc_mir_transform::lint::Lint as rustc_middle::mir::visit::Visitor>::visit_terminator
         9: rustc_mir_transform::lint::lint_body
        10: rustc_mir_transform::pass_manager::run_passes_inner
        11: rustc_mir_transform::run_optimization_passes
        12: rustc_mir_transform::optimized_mir
        13: rustc_query_impl::query_impl::optimized_mir::invoke_provider_fn::__rust_begin_short_backtrace
        14: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<rustc_query_impl::execution::execute_job_non_incr<rustc_middle::query::caches::DefIdCache<rustc_middle::query::erase::ErasedData<[u8; 8]>>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 8]>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 8]>>
        15: rustc_query_impl::execution::try_execute_query::<rustc_middle::query::caches::DefIdCache<rustc_middle::query::erase::ErasedData<[u8; 8]>>, false>
        16: rustc_query_impl::query_impl::optimized_mir::execute_query_non_incr::__rust_end_short_backtrace
        17: <rustc_middle::ty::context::TyCtxt>::instance_mir
        18: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_data_structures::sync::parallel::par_for_each_in<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners<rustc_interface::passes::analysis::{closure#1}::{closure#0}>::{closure#0}>::{closure#0}::{closure#1}::{closure#0}>>
        19: rustc_data_structures::sync::parallel::par_for_each_in::<&rustc_span::def_id::LocalDefId, &[rustc_span::def_id::LocalDefId], <rustc_middle::ty::context::TyCtxt>::par_hir_body_owners<rustc_interface::passes::analysis::{closure#1}::{closure#0}>::{closure#0}>
        20: <rustc_session::session::Session>::time::<(), rustc_interface::passes::analysis::{closure#1}>
        21: rustc_interface::passes::analysis
        22: rustc_query_impl::query_impl::analysis::invoke_provider_fn::__rust_begin_short_backtrace
        23: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<rustc_query_impl::execution::execute_job_non_incr<rustc_middle::query::caches::SingleCache<rustc_middle::query::erase::ErasedData<[u8; 0]>>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 0]>>::{closure#0}, rustc_middle::query::erase::ErasedData<[u8; 0]>>
        24: rustc_query_impl::execution::try_execute_query::<rustc_middle::query::caches::SingleCache<rustc_middle::query::erase::ErasedData<[u8; 0]>>, false>
        25: rustc_query_impl::query_impl::analysis::execute_query_non_incr::__rust_end_short_backtrace
        26: std::panicking::catch_unwind::<core::option::Option<rustc_interface::queries::Linker>, core::panic::unwind_safe::AssertUnwindSafe<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}::{closure#0}>>
        27: <std::thread::local::LocalKey<core::cell::Cell<*const ()>>>::with::<rustc_middle::ty::context::tls::enter_context<<rustc_middle::ty::context::GlobalCtxt>::enter<rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}, core::option::Option<rustc_interface::queries::Linker>>::{closure#1}, core::option::Option<rustc_interface::queries::Linker>>::{closure#0}, core::option::Option<rustc_interface::queries::Linker>>
        28: <rustc_middle::ty::context::TyCtxt>::create_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_interface::passes::create_and_enter_global_ctxt<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>::{closure#2}>
        29: rustc_interface::passes::create_and_enter_global_ctxt::<core::option::Option<rustc_interface::queries::Linker>, rustc_driver_impl::run_compiler::{closure#0}::{closure#2}>
        30: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}::{closure#0}>>
        31: rustc_interface::interface::run_compiler::<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}
        32: <scoped_tls::ScopedKey<rustc_span::SessionGlobals>>::set::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}::{closure#0}, ()>
        33: std::sys::backtrace::__rust_begin_short_backtrace::<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>
        34: std::panicking::catch_unwind::<(), core::panic::unwind_safe::AssertUnwindSafe<std::thread::lifecycle::spawn_unchecked<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1}::{closure#0}>>
        35: <std::thread::lifecycle::spawn_unchecked<rustc_interface::util::run_in_thread_with_globals<rustc_interface::util::run_in_thread_pool_with_globals<rustc_interface::interface::run_compiler<(), rustc_driver_impl::run_compiler::{closure#0}>::{closure#1}, ()>::{closure#0}, ()>::{closure#0}::{closure#0}, ()>::{closure#1} as core::ops::function::FnOnce<()>>::call_once::{shim:vtable#0}
        36: <std::sys::thread::unix::Thread>::new::thread_start
        37: <unknown>
        38: <unknown>
      
  --> /checkout/tests/ui/drop/drop_order_if_let_rescope.rs:119:1
---
note: please make sure that you have updated to the latest nightly

note: rustc 1.97.0-nightly (e8443b1ba 2026-05-20) running on aarch64-unknown-linux-gnu

note: compiler flags: -Z threads=1 -Z simulate-remapped-rust-src-base=/rustc/FAKE_PREFIX -Z translate-remapped-path-to-local-path=no -Z ignore-directory-in-diagnostics-source-blocks=/cargo -Z ignore-directory-in-diagnostics-source-blocks=/checkout/vendor -C codegen-units=1 -Z ui-testing -Z deduplicate-diagnostics=no -Z write-long-types-to-disk=no -C strip=debuginfo -C prefer-dynamic -C rpath -C debuginfo=0 -Z validate-mir -Z lint-mir

query stack during panic:
end of query stack
------------------------------------------

@rust-bors
Copy link
Copy Markdown
Contributor

rust-bors Bot commented May 20, 2026

☀️ Try build successful (CI)
Build commit: 4eca0f3 (4eca0f31a0f5e100354734a70c8023dd16a08796, parent: 9128490ab32b5ab37a4bb9f6667a9ce5d32924c0)

@rust-timer

This comment has been minimized.

@rust-timer
Copy link
Copy Markdown
Collaborator

Finished benchmarking commit (4eca0f3): comparison URL.

Overall result: ❌✅ regressions and improvements - please read:

Benchmarking means the PR may be perf-sensitive. It's automatically marked not fit for rolling up. Overriding is possible but disadvised: it risks changing compiler perf.

Next, please: If you can, justify the regressions found in this try perf run in writing along with @rustbot label: +perf-regression-triaged. If not, fix the regressions and do another perf run. Neutral or positive results will clear the label automatically.

@bors rollup=never
@rustbot label: -S-waiting-on-perf +perf-regression

Instruction count

Our most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.

mean range count
Regressions ❌
(primary)
2.5% [0.2%, 10.9%] 24
Regressions ❌
(secondary)
14.9% [0.0%, 762.2%] 59
Improvements ✅
(primary)
-1.0% [-6.0%, -0.2%] 214
Improvements ✅
(secondary)
-1.2% [-13.3%, -0.1%] 183
All ❌✅ (primary) -0.7% [-6.0%, 10.9%] 238

Max RSS (memory usage)

Results (primary 0.8%, secondary -2.5%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
2.5% [2.2%, 2.9%] 5
Regressions ❌
(secondary)
0.4% [0.4%, 0.4%] 1
Improvements ✅
(primary)
-3.5% [-6.5%, -0.4%] 2
Improvements ✅
(secondary)
-2.8% [-3.7%, -1.8%] 12
All ❌✅ (primary) 0.8% [-6.5%, 2.9%] 7

Cycles

Results (primary -2.5%, secondary 0.1%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
3.9% [1.7%, 7.0%] 5
Regressions ❌
(secondary)
64.2% [5.5%, 282.4%] 5
Improvements ✅
(primary)
-3.0% [-5.6%, -1.7%] 62
Improvements ✅
(secondary)
-5.0% [-20.4%, -1.5%] 63
All ❌✅ (primary) -2.5% [-5.6%, 7.0%] 67

Binary size

Results (primary 0.4%, secondary 1.4%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
1.5% [0.0%, 6.6%] 82
Regressions ❌
(secondary)
2.2% [0.0%, 6.6%] 94
Improvements ✅
(primary)
-1.0% [-3.5%, -0.1%] 60
Improvements ✅
(secondary)
-1.1% [-5.6%, -0.1%] 28
All ❌✅ (primary) 0.4% [-3.5%, 6.6%] 142

Bootstrap: 517.203s -> 494.695s (-4.35%)
Artifact size: 400.60 MiB -> 397.22 MiB (-0.84%)

@rustbot rustbot removed the S-waiting-on-perf Status: Waiting on a perf run to be completed. label May 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

perf-regression Performance regression. S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants