Async drop codegen by azhogin · Pull Request #123948 · rust-lang/rust (original) (raw)


 -134,124,196  ???:<rustc_trait_selection::traits::select::SelectionContext>::poly_select::{closure
   99,231,099  ???:<rustc_trait_selection::traits::select::SelectionContext>::confirm_candidate
   57,767,214  ???:<rustc_trait_selection::traits::fulfill::FulfillProcessor as rustc_data_structures::obligation_forest::ObligationProcessor>::process_obligation
  -21,943,725  ???:<rustc_trait_selection::traits::select::SelectionContext>::match_impl::{closure
   15,129,826  ???:rustc_mir_transform::simplify::simplify_cfg
   12,888,519  ???:rustc_mir_transform::simplify::remove_dead_blocks
  -11,741,513  ???:<rustc_middle::ty::predicate::Clause as rustc_type_ir::fold::TypeFoldable<rustc_middle::ty::context::TyCtxt>>::fold_with::<rustc_type_ir::binder::ArgFolder<rustc_middle::ty::context::TyCtxt>>
   11,004,458  ???:rustc_middle::ty::util::fold_list::<rustc_type_ir::binder::ArgFolder<rustc_middle::ty::context::TyCtxt>, &rustc_middle::ty::list::RawList<rustc_middle::ty::list::TypeInfo, rustc_middle::ty::predicate::Clause>, rustc_middle::ty::predicate::Clause, <&rustc_middle::ty::list::RawList<rustc_middle::ty::list::TypeInfo, rustc_middle::ty::predicate::Clause> as rustc_type_ir::fold::TypeFoldable<rustc_middle::ty::context::TyCtxt>>::fold_with<rustc_type_ir::binder::ArgFolder<rustc_middle::ty::context::TyCtxt>>::{closure
    7,227,082  ???:<std::sync::poison:🔂:Once>::call_once_force::<<std::sync::once_lock::OnceLock<alloc::vec::Vec<rustc_middle::mir::BasicBlock>>>::initialize<<std::sync::once_lock::OnceLock<alloc::vec::Vec<rustc_middle::mir::BasicBlock>>>::get_or_init<<rustc_middle::mir::basic_blocks::BasicBlocks>::reverse_postorder::{closure
    4,215,304  ???:<std::sync::poison:🔂:Once>::call_once_force::<<std::sync::once_lock::OnceLock<rustc_data_structures::graph::dominators::Dominators<rustc_middle::mir::BasicBlock>>>::initialize<<std::sync::once_lock::OnceLock<rustc_data_structures::graph::dominators::Dominators<rustc_middle::mir::BasicBlock>>>::get_or_init<<rustc_middle::mir::basic_blocks::BasicBlocks>::dominators::{closure
    3,200,420  ???:<rustc_mir_transform::remove_noop_landing_pads::RemoveNoopLandingPads as rustc_mir_transform::pass_manager::MirPass>::run_pass
    3,103,429  ???:<rustc_trait_selection::traits::normalize::AssocTypeNormalizer>::fold::<rustc_type_ir::predicate::TraitRef<rustc_middle::ty::context::TyCtxt>>
    3,089,070  ???:<dyn rustc_hir_analysis::hir_ty_lowering::HirTyLowerer>::lower_generic_args_of_path::{closure
   -2,807,695  ???:<dyn rustc_hir_analysis::hir_ty_lowering::HirTyLowerer>::lower_path

some inliner noise, though within confirm_candidate and process_obligation that's likely gonna cause some sort of instruction counter change.

The actual perf regression is more simplify_cfg, remove_dead_blocks, RemoveNoopLandingPads, along with some dominator cache invalidations and recomputations.