Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[experiment] Enable debug-logging by default #111924

Closed
wants to merge 4 commits into from

Conversation

jyn514
Copy link
Member

@jyn514 jyn514 commented May 24, 2023

#74726 (comment):

Mark-Simulacrum: When we finish with optimizations, could we get another final try run in that checks the overhead of turning off the compile-time removal of most logging? In particular if we can afford it I'd love to have it on by default -- it's often a real pain to have to recompile with debug assertions on just to get debug logging. Plus, debug assertions are a 25% (just compiler) or 50% (std and compiler) performance hit; I wonder how much of that was from logging...

hawkw: FWIW, it might be worth trying this again with the latest tracing and tracing-subscriber; we fixed a bug that caused the fast path to not be taken in some cases where it should have been. It might be worth a test.

r? @ghost

@jyn514 jyn514 added the S-experimental Status: Ongoing experiment that does not require reviewing and won't be merged in its current state. label May 24, 2023
@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) labels May 24, 2023
@jyn514 jyn514 removed the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label May 24, 2023
@jyn514
Copy link
Member Author

jyn514 commented May 24, 2023

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

@rustbot rustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label May 24, 2023
@bors
Copy link
Contributor

bors commented May 24, 2023

⌛ Trying commit 8dd0f8f0c44b0f41a5dd1c4f2c05291c747a280c with merge e2de86325568355c6a9821deb2a4454056df5ddf...

@bors
Copy link
Contributor

bors commented May 25, 2023

☀️ Try build successful - checks-actions
Build commit: e2de86325568355c6a9821deb2a4454056df5ddf (e2de86325568355c6a9821deb2a4454056df5ddf)

@rust-timer

This comment has been minimized.

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (e2de86325568355c6a9821deb2a4454056df5ddf): comparison URL.

Overall result: ❌ regressions - ACTION NEEDED

Benchmarking this pull request likely means that it is perf-sensitive, so we're automatically marking it as not fit for rolling up. While you can manually mark this PR as fit for rollup, we strongly recommend not doing so since this PR may lead to changes in compiler perf.

Next Steps: If you can justify the regressions found in this try perf run, please indicate this with @rustbot label: +perf-regression-triaged along with sufficient written justification. If you cannot justify the regressions please fix the regressions and do another perf run. If the next run shows neutral or positive results, the label will be automatically removed.

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

Instruction count

This is a highly reliable metric that was used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
4.3% [0.6%, 9.8%] 223
Regressions ❌
(secondary)
4.8% [0.3%, 24.6%] 246
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 4.3% [0.6%, 9.8%] 223

Max RSS (memory usage)

Results

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
3.2% [0.7%, 8.4%] 199
Regressions ❌
(secondary)
4.9% [1.1%, 10.8%] 238
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 3.2% [0.7%, 8.4%] 199

Cycles

Results

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
3.6% [0.6%, 8.6%] 202
Regressions ❌
(secondary)
6.2% [0.7%, 43.3%] 181
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 3.6% [0.6%, 8.6%] 202

Binary size

This benchmark run did not return any relevant results for this metric.

Bootstrap: 647.059s -> 675.597s (4.41%)

@rustbot rustbot added perf-regression Performance regression. and removed S-waiting-on-perf Status: Waiting on a perf run to be completed. labels May 25, 2023
@oli-obk
Copy link
Contributor

oli-obk commented May 25, 2023

We could probably change various debug level logs to trace if they are on a hot path

@jyn514
Copy link
Member Author

jyn514 commented May 26, 2023

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

@rustbot rustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label May 26, 2023
@bors
Copy link
Contributor

bors commented May 26, 2023

⌛ Trying commit a5a5d00576d7b8bb3d5098eeb487e2ead21fb412 with merge dd6ffc5d6d4227555cbf5114e84563776133d50e...

@rust-log-analyzer

This comment has been minimized.

@jyn514
Copy link
Member Author

jyn514 commented May 26, 2023

@rust-timer build dd6ffc5d6d4227555cbf5114e84563776133d50e

@rust-timer

This comment has been minimized.

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (dd6ffc5d6d4227555cbf5114e84563776133d50e): comparison URL.

Overall result: ❌ regressions - ACTION NEEDED

Benchmarking this pull request likely means that it is perf-sensitive, so we're automatically marking it as not fit for rolling up. While you can manually mark this PR as fit for rollup, we strongly recommend not doing so since this PR may lead to changes in compiler perf.

Next Steps: If you can justify the regressions found in this try perf run, please indicate this with @rustbot label: +perf-regression-triaged along with sufficient written justification. If you cannot justify the regressions please fix the regressions and do another perf run. If the next run shows neutral or positive results, the label will be automatically removed.

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

Instruction count

This is a highly reliable metric that was used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
3.4% [0.6%, 6.6%] 219
Regressions ❌
(secondary)
3.4% [0.3%, 14.0%] 240
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 3.4% [0.6%, 6.6%] 219

Max RSS (memory usage)

Results

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
2.2% [0.5%, 6.2%] 135
Regressions ❌
(secondary)
3.4% [0.8%, 6.6%] 192
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 2.2% [0.5%, 6.2%] 135

Cycles

Results

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
2.8% [1.1%, 6.0%] 189
Regressions ❌
(secondary)
4.4% [0.9%, 18.3%] 152
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 2.8% [1.1%, 6.0%] 189

Binary size

This benchmark run did not return any relevant results for this metric.

Bootstrap: 644.952s -> 665.666s (3.21%)

@rustbot rustbot removed the S-waiting-on-perf Status: Waiting on a perf run to be completed. label May 26, 2023
@jyn514
Copy link
Member Author

jyn514 commented May 26, 2023

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

@jyn514
Copy link
Member Author

jyn514 commented May 31, 2023

forgot to start the timer apparently 🤦

@bors try @rust-timer queue

@rust-timer

This comment has been minimized.

@rustbot rustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label May 31, 2023
@bors
Copy link
Contributor

bors commented May 31, 2023

⌛ Trying commit a97eec4 with merge 3a5274a5159b2c2e9e8614d529da73af3b9bea6f...

@bors
Copy link
Contributor

bors commented May 31, 2023

☀️ Try build successful - checks-actions
Build commit: 3a5274a5159b2c2e9e8614d529da73af3b9bea6f (3a5274a5159b2c2e9e8614d529da73af3b9bea6f)

@rust-timer

This comment has been minimized.

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (3a5274a5159b2c2e9e8614d529da73af3b9bea6f): comparison URL.

Overall result: ❌ regressions - ACTION NEEDED

Benchmarking this pull request likely means that it is perf-sensitive, so we're automatically marking it as not fit for rolling up. While you can manually mark this PR as fit for rollup, we strongly recommend not doing so since this PR may lead to changes in compiler perf.

Next Steps: If you can justify the regressions found in this try perf run, please indicate this with @rustbot label: +perf-regression-triaged along with sufficient written justification. If you cannot justify the regressions please fix the regressions and do another perf run. If the next run shows neutral or positive results, the label will be automatically removed.

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

Instruction count

This is a highly reliable metric that was used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
3.3% [0.6%, 6.5%] 211
Regressions ❌
(secondary)
3.3% [0.4%, 14.3%] 233
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 3.3% [0.6%, 6.5%] 211

Max RSS (memory usage)

Results

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
2.1% [0.6%, 5.3%] 73
Regressions ❌
(secondary)
2.9% [0.8%, 6.0%] 141
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 2.1% [0.6%, 5.3%] 73

Cycles

Results

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
2.6% [1.1%, 5.2%] 156
Regressions ❌
(secondary)
4.2% [0.9%, 22.4%] 120
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 2.6% [1.1%, 5.2%] 156

Binary size

This benchmark run did not return any relevant results for this metric.

Bootstrap: 643.715s -> 661.714s (2.80%)

@rustbot rustbot removed the S-waiting-on-perf Status: Waiting on a perf run to be completed. label May 31, 2023
@jyn514
Copy link
Member Author

jyn514 commented Jun 1, 2023

Ok, I think I'm hitting diminishing returns on demoting things from debug to trace. I don't think it's going to go much below a 3% regression.

@hawkw do you know if there's any remaining low-hanging fruit for speeding up event! calls? Happy to invest time into it if you have a suggestions on how to set up a proper benchmark.

@jyn514
Copy link
Member Author

jyn514 commented Jun 1, 2023

do you know if there's any remaining low-hanging fruit for speeding up event! calls?

to be clear, I'm talking about the case when no subscriber is registered, it's fine to be slow if RUSTC_LOG=debug is set

@hawkw
Copy link
Contributor

hawkw commented Jun 1, 2023

Ok, I think I'm hitting diminishing returns on demoting things from debug to trace. I don't think it's going to go much below a 3% regression.

@hawkw do you know if there's any remaining low-hanging fruit for speeding up event! calls? Happy to invest time into it if you have a suggestions on how to set up a proper benchmark.

Uhh...we have benchmarks around this in tracing (see https://github.com/tokio-rs/tracing/blob/bec82286e8b048b031fb070360f397b3da9185d3/tracing/benches/shared.rs#L10-L33; a majority of our benchmarks are run both with and without a subscriber). In these tests, the cost of skipping an event when there's no subscriber registered should be equivalent to the cost of a single Relaxed atomic load per skipped event (we look at the atomic that tracks whether or not a subscriber exists), plus the cost of branching on that value. IMO, that's more or less the theoretical minimum overhead for skipping disabled instrumentation at runtime, without doing some kind of dynamic editing of the binary itself.

@hawkw
Copy link
Contributor

hawkw commented Jun 1, 2023

FWIW, disabled tracing spans do have somewhat higher overhead than disabled events, since an empty Span struct must still be constructed even when there is no subscriber. I'm not sure if that's particularly useful to you.

@jyn514
Copy link
Member Author

jyn514 commented Jun 1, 2023

@hawkw can you talk more about Spans? the two main ways rustc uses the core tracing library are through debug! calls and the #[instrument] macro - does the latter generate a span?

@hawkw
Copy link
Contributor

hawkw commented Jun 1, 2023

@hawkw can you talk more about Spans? the two main ways rustc uses the core tracing library are through debug! calls and the #[instrument] macro - does the latter generate a span?

The debug! macro emits an event, it does not generate a span. #[instrument] will generate a span. However, because #[instrument] is a procedural macro, it is actually able to be a bit smarter than debug_span! and similar function-like span macros, and will avoid constructing a span value in some cases: https://github.com/tokio-rs/tracing/blob/29146260fb4615d271d2e899ad95a753bb42915e/tracing-attributes/src/expand.rs#L331-L347

@jyn514
Copy link
Member Author

jyn514 commented Jun 1, 2023

Got it. I'm trying to lower the max_static_level from info to debug in this PR and it had a fairly large regression. I wonder if constructing the Span unconditionally is what's slower? I tried reading the expanded code and it looks to me like it's checking LevelFilter::current() already before creating the span, which doesn't match what you described, but maybe I'm misunderstanding either the code or your explanation?

        let __tracing_attr_span;
        let __tracing_attr_guard;
        if tracing::Level::DEBUG <= ::tracing::level_filters::STATIC_MAX_LEVEL
            && tracing::Level::DEBUG <= ::tracing::level_filters::LevelFilter::current()
        {
            __tracing_attr_span = /* ... */

@jyn514
Copy link
Member Author

jyn514 commented Jun 1, 2023

actually, let me see if I can get a cachegrind report of exactly what's slower, that will be easier than trying to figure this out from first principles

@hawkw
Copy link
Contributor

hawkw commented Jun 1, 2023

Got it. I'm trying to lower the max_static_level from info to debug in this PR and it had a fairly large regression. I wonder if constructing the Span unconditionally is what's slower? I tried reading the expanded code and it looks to me like it's checking LevelFilter::current() already before creating the span, which doesn't match what you described, but maybe I'm misunderstanding either the code or your explanation?

        let __tracing_attr_span;
        let __tracing_attr_guard;
        if tracing::Level::DEBUG <= ::tracing::level_filters::STATIC_MAX_LEVEL
            && tracing::Level::DEBUG <= ::tracing::level_filters::LevelFilter::current()
        {
            __tracing_attr_span = /* ... */

Hmm, LevelFilter::current is also an atomic load, but then it has to do a comparison as well... It's possible the instrument macro is not checking the global subscriber-exists bool first like the function-like span macros do?

@jyn514
Copy link
Member Author

jyn514 commented Jun 1, 2023

ahh, yeah I see this snippet in the function-like macros that's not in the instrument macro:

        && {
            let interest = CALLSITE.interest();
            !interest.is_never()
                && $crate::__macro_support::__is_enabled(CALLSITE.metadata(), interest)
        };

@hawkw
Copy link
Contributor

hawkw commented Jun 1, 2023

ahh, yeah I see this snippet in the function-like macros that's not in the instrument macro:

        && {
            let interest = CALLSITE.interest();
            !interest.is_never()
                && $crate::__macro_support::__is_enabled(CALLSITE.metadata(), interest)
        };

that's a slower path for per-callsite cached interests --- it happens when a subscriber does exist and the level is less verbose than the static max level. it happens inside the if that checks the static max level, since the #[instrument] macro expands to a span! macro inside of that if.

@hawkw
Copy link
Contributor

hawkw commented Jun 1, 2023

(by "slow path" i suppose what i really mean is "less fast path", since the actually slow path is to actually ask a filter what it thinks of a particular piece of span metadata --- the cached interest path is so that we can avoid having to do that more than once)

@jyn514
Copy link
Member Author

jyn514 commented Jun 2, 2023

actually, let me see if I can get a cachegrind report of exactly what's slower, that will be easier than trying to figure this out from first principles

lol this just shows the calling functions being slower - don't know what i expected

--------------------------------------------------------------------------------
-- Metadata
--------------------------------------------------------------------------------
Invocation:       /home/jyn/.local/bin/cg_annotate --show-percs=no results/cgfilt-diff-97d328012b9ed9b7d481c40e84aa1f2c65b33ec8-e2de86325568355c6a9821deb2a4454056df5ddf-diesel-1.4.8-Check-Full
Files compared:   results/cgfilt-97d328012b9ed9b7d481c40e84aa1f2c65b33ec8-diesel-1.4.8-Check-Full; results/cgfilt-e2de86325568355c6a9821deb2a4454056df5ddf-diesel-1.4.8-Check-Full
Command:          /home/jyn/.local/lib/rustup/toolchains/97d328012b9ed9b7d481c40e84aa1f2c65b33ec8/bin/rustc --crate-name diesel src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --crate-type lib --emit=dep-info,metadata -C embed-bitcode=no -C debuginfo=2 --cfg feature="32-column-tables" --cfg feature="default" --cfg feature="with-deprecated" -C metadata=92d55d2b8fe127ae -C extra-filename=-92d55d2b8fe127ae --out-dir /tmp/.tmpzMljwJ/target/debug/deps -L dependency=/tmp/.tmpzMljwJ/target/debug/deps --extern byteorder=/tmp/.tmpzMljwJ/target/debug/deps/libbyteorder-fb9af6de9c31ca47.rmeta --extern diesel_derives=/tmp/.tmpzMljwJ/target/debug/deps/libdiesel_derives-2c56f8370b723fbc.so -Adeprecated -Aunknown-lints -Zincremental-verify-ich; /home/jyn/.local/lib/rustup/toolchains/e2de86325568355c6a9821deb2a4454056df5ddf/bin/rustc --crate-name diesel src/lib.rs --error-format=json --json=diagnostic-rendered-ansi,artifacts,future-incompat --crate-type lib --emit=dep-info,metadata -C embed-bitcode=no -C debuginfo=2 --cfg feature="32-column-tables" --cfg feature="default" --cfg feature="with-deprecated" -C metadata=92d55d2b8fe127ae -C extra-filename=-92d55d2b8fe127ae --out-dir /tmp/.tmpB3Freb/target/debug/deps -L dependency=/tmp/.tmpB3Freb/target/debug/deps --extern byteorder=/tmp/.tmpB3Freb/target/debug/deps/libbyteorder-fb9af6de9c31ca47.rmeta --extern diesel_derives=/tmp/.tmpB3Freb/target/debug/deps/libdiesel_derives-2c56f8370b723fbc.so -Adeprecated -Aunknown-lints -Zincremental-verify-ich
Events recorded:  Ir
Events shown:     Ir
Event sort order: Ir
Threshold:        0.1%
Annotation:       on

--------------------------------------------------------------------------------
-- Summary
--------------------------------------------------------------------------------
Ir___________ 

1,912,575,279  PROGRAM TOTALS

--------------------------------------------------------------------------------
-- File:function summary
--------------------------------------------------------------------------------
  Ir___________  file:function

< 1,900,649,304  ???:
  1,081,075,477    <rustc_trait_selection::traits::select::SelectionContext>::assemble_candidates
   -717,453,415    <rustc_trait_selection::traits::select::SelectionContext>::candidate_from_obligation_no_cache
    248,766,486    <rustc_trait_selection::traits::select::SelectionContext>::confirm_candidate
    200,840,982    rustc_mir_transform::simplify::simplify_cfg
   -198,530,838    <rustc_mir_transform::simplify::SimplifyCfg as rustc_middle::mir::MirPass>::run_pass
    183,560,582    <rustc_infer::infer::resolve::OpportunisticVarResolver as rustc_type_ir::fold::FallibleTypeFolder<rustc_middle::ty::context::TyCtxt>>::try_fold_ty
    149,370,676    <rustc_trait_selection::traits::wf::WfPredicates>::nominal_obligations_inner
   -123,481,103    <rustc_trait_selection::traits::wf::WfPredicates>::compute
     90,448,027    <rustc_ast_lowering::LoweringContext>::lower_qpath
     81,394,368    <rustc_infer::infer::combine::CombineFields>::instantiate
     79,113,231    <rustc_trait_selection::traits::fulfill::FulfillProcessor as rustc_data_structures::obligation_forest::ObligationProcessor>::process_obligation
     56,892,823    <core::iter::adapters::map::Map<core::iter::adapters::enumerate::Enumerate<core::slice::iter::Iter<(rustc_middle::ty::Predicate, rustc_span::span_encoding::Span)>>, <rustc_infer::traits::util::Elaborator<rustc_middle::ty::Predicate>>::elaborate::{closure#0}> as core::iter::traits::iterator::Iterator>::try_fold::<(), core::iter::traits::iterator::Iterator::find::check<rustc_middle::ty::Predicate, &mut <rustc_infer::traits::util::Elaborator<rustc_middle::ty::Predicate>>::extend_deduped<core::iter::adapters::map::Map<core::iter::adapters::enumerate::Enumerate<core::slice::iter::Iter<(rustc_middle::ty::Predicate, rustc_span::span_encoding::Span)>>, <rustc_infer::traits::util::Elaborator<rustc_middle::ty::Predicate>>::elaborate::{closure#0}>>::{closure#0}>::{closure#0}, core::ops::control_flow::ControlFlow<rustc_middle::ty::Predicate>>
    -56,269,612    <alloc::vec::Vec<rustc_middle::ty::Predicate> as alloc::vec::spec_extend::SpecExtend<rustc_middle::ty::Predicate, core::iter::adapters::filter::Filter<core::iter::adapters::map::Map<core::iter::adapters::enumerate::Enumerate<core::slice::iter::Iter<(rustc_middle::ty::Predicate, rustc_span::span_encoding::Span)>>, <rustc_infer::traits::util::Elaborator<rustc_middle::ty::Predicate>>::elaborate::{closure#0}>, <rustc_infer::traits::util::Elaborator<rustc_middle::ty::Predicate>>::extend_deduped<core::iter::adapters::map::Map<core::iter::adapters::enumerate::Enumerate<core::slice::iter::Iter<(rustc_middle::ty::Predicate, rustc_span::span_encoding::Span)>>, <rustc_infer::traits::util::Elaborator<rustc_middle::ty::Predicate>>::elaborate::{closure#0}>>::{closure#0}>>>::spec_extend
     54,580,431    rustc_trait_selection::traits::do_normalize_predicates
     53,546,878    <rustc_data_structures::graph::scc::SccsConstruction<rustc_borrowck::constraints::graph::RegionGraph<rustc_borrowck::constraints::graph::Normal>, rustc_borrowck::constraints::ConstraintSccIndex>>::start_walk_from
     48,069,305    <rustc_trait_selection::traits::fulfill::FulfillmentContext as rustc_infer::traits::engine::TraitEngine>::register_predicate_obligation
     47,601,664    <rustc_middle::mir::syntax::Place>::ty::<rustc_middle::mir::Body>
     44,995,408    <rustc_infer::traits::Obligation<rustc_middle::ty::Predicate> as rustc_type_ir::fold::TypeFoldable<rustc_middle::ty::context::TyCtxt>>::fold_with::<rustc_infer::infer::resolve::OpportunisticVarResolver>
    -44,925,627    <rustc_ast_lowering::LoweringContext>::lower_path_segment
    -42,819,898    <core::iter::adapters::map::Map<core::iter::adapters::map::Map<core::ops::range::Range<usize>, <rustc_middle::ty::sty::RegionVid as rustc_index::idx::Idx>::new>, <rustc_data_structures::graph::scc::SccsConstruction<rustc_borrowck::constraints::graph::RegionGraph<rustc_borrowck::constraints::graph::Normal>, rustc_borrowck::constraints::ConstraintSccIndex>>::construct::{closure#0}> as core::iter::traits::iterator::Iterator>::fold::<(), core::iter::traits::iterator::Iterator::for_each::call<rustc_borrowck::constraints::ConstraintSccIndex, <alloc::vec::Vec<rustc_borrowck::constraints::ConstraintSccIndex>>::extend_trusted<core::iter::adapters::map::Map<core::iter::adapters::map::Map<core::ops::range::Range<usize>, <rustc_middle::ty::sty::RegionVid as rustc_index::idx::Idx>::new>, <rustc_data_structures::graph::scc::SccsConstruction<rustc_borrowck::constraints::graph::RegionGraph<rustc_borrowck::constraints::graph::Normal>, rustc_borrowck::constraints::ConstraintSccIndex>>::construct::{closure#0}>>::{closure#0}>::{closure#0}>
    -42,533,480    <rustc_trait_selection::traits::select::SelectionContext>::select
     41,054,984    <rustc_hir::hir::QPath as rustc_data_structures::stable_hasher::HashStable<rustc_query_system::ich::hcx::StableHashingContext>>::hash_stable
     38,740,639    <&rustc_middle::ty::list::List<rustc_middle::ty::subst::GenericArg> as rustc_type_ir::fold::TypeFoldable<rustc_middle::ty::context::TyCtxt>>::try_fold_with::<rustc_middle::ty::subst::SubstFolder>
     35,433,561    <rustc_infer::infer::region_constraints::RegionConstraintCollector>::make_eqregion
     35,115,245    <alloc::vec::Vec<rustc_middle::ty::sty::Binder<rustc_middle::ty::OutlivesPredicate<rustc_middle::ty::Ty, rustc_middle::ty::sty::Region>>> as alloc::vec::spec_from_iter::SpecFromIter<rustc_middle::ty::sty::Binder<rustc_middle::ty::OutlivesPredicate<rustc_middle::ty::Ty, rustc_middle::ty::sty::Region>>, core::iter::adapters::inspect::Inspect<core::iter::adapters::chain::Chain<core::iter::adapters::filter::Filter<core::iter::adapters::filter_map::FilterMap<core::iter::adapters::copied::Copied<core::slice::iter::Iter<rustc_middle::ty::Predicate>>, <rustc_infer::infer::outlives::verify::VerifyBoundCx>::collect_outlives_from_predicate_list<core::iter::adapters::copied::Copied<core::slice::iter::Iter<rustc_middle::ty::Predicate>>>::{closure#0}>, <rustc_infer::infer::outlives::verify::VerifyBoundCx>::collect_outlives_from_predicate_list<core::iter::adapters::copied::Copied<core::slice::iter::Iter<rustc_middle::ty::Predicate>>>::{closure#1}>, core::iter::adapters::filter_map::FilterMap<indexmap::set::Iter<rustc_middle::ty::OutlivesPredicate<rustc_infer::infer::region_constraints::GenericKind, rustc_middle::ty::sty::Region>>, <rustc_infer::infer::outlives::verify::VerifyBoundCx>::declared_generic_bounds_from_env_for_erased_ty::{closure#0}>>, <rustc_infer::infer::outlives::verify::VerifyBoundCx>::declared_generic_bounds_from_env_for_erased_ty::{closure#1}>>>::from_iter
    -33,874,307    rustc_trait_selection::traits::normalize_param_env_or_error
     31,671,648    <rustc_borrowck::type_check::TypeChecker>::typeck_mir
     31,478,570    <rustc_trait_selection::traits::select::SelectionContext>::match_projection_projections
    -31,445,396    <rustc_infer::infer::InferCtxt>::commit_if_ok::<rustc_infer::infer::InferOk<()>, rustc_middle::ty::error::TypeError, <rustc_infer::infer::at::Trace>::sub<rustc_middle::ty::sty::AliasTy>::{closure#0}>
    -30,211,730    <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_with_expectation_and_args
    -30,084,059    <rustc_infer::infer::equate::Equate as rustc_middle::ty::relate::TypeRelation>::relate::<rustc_middle::ty::sty::Region>
     26,272,474    <rustc_mir_dataflow::move_paths::builder::Gatherer>::gather_move
     25,643,399    <rustc_mir_build::build::Builder>::as_temp_inner
    -24,178,256    <rustc_mir_build::build::Builder>::as_operand
     22,248,699    rustc_middle::ty::relate::structurally_relate_tys::<rustc_infer::infer::generalize::Generalizer<rustc_infer::infer::generalize::CombineDelegate>>
    -21,343,815    <rustc_span::span_encoding::Span as rustc_data_structures::stable_hasher::HashStable<rustc_query_system::ich::hcx::StableHashingContext>>::hash_stable
     21,038,810    <&rustc_middle::ty::list::List<rustc_middle::ty::subst::GenericArg> as rustc_type_ir::fold::TypeFoldable<rustc_middle::ty::context::TyCtxt>>::try_fold_with::<rustc_infer::infer::freshen::TypeFreshener>
     19,762,331    <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_with_expectation
     19,326,021    <rustc_hir_typeck::writeback::WritebackCx as rustc_hir::intravisit::Visitor>::visit_expr
     19,237,007    <rustc_span::source_map::SourceMap>::end_point
    -18,863,525    <rustc_ast_lowering::LoweringContext>::lower_ty_direct
     18,123,426    <rustc_borrowck::MirBorrowckCtxt as rustc_mir_dataflow::framework::visitor::ResultsVisitor>::visit_statement_before_primary_effect
     17,024,084    <rustc_trait_selection::traits::select::SelectionContext>::evaluate_stack
    -16,879,739    rustc_mir_dataflow::drop_flag_effects::on_all_children_bits::on_all_children_bits::<rustc_mir_dataflow::drop_flag_effects::drop_flag_effects_for_location<<rustc_mir_dataflow::impls::MaybeInitializedPlaces as rustc_mir_dataflow::framework::GenKillAnalysis>::statement_effect<rustc_index::bit_set::ChunkedBitSet<rustc_mir_dataflow::move_paths::MovePathIndex>>::{closure#0}>::{closure#0}>
    -16,354,346    <rustc_infer::infer::InferCtxt>::fully_resolve::<alloc::vec::Vec<rustc_middle::ty::Predicate>>
    -16,210,561    rustc_mir_dataflow::move_paths::builder::gather_moves
     15,993,068    <dyn rustc_hir_analysis::astconv::AstConv>::ast_ty_to_ty_inner
    -15,941,424    <rustc_hir::hir::TyKind as rustc_data_structures::stable_hasher::HashStable<rustc_query_system::ich::hcx::StableHashingContext>>::hash_stable
     15,677,880    rustc_mir_dataflow::framework::visitor::visit_results::<rustc_borrowck::dataflow::BorrowckAnalyses<rustc_index::bit_set::BitSet<rustc_borrowck::dataflow::BorrowIndex>, rustc_index::bit_set::ChunkedBitSet<rustc_mir_dataflow::move_paths::MovePathIndex>, rustc_index::bit_set::ChunkedBitSet<rustc_mir_dataflow::move_paths::InitIndex>>, rustc_borrowck::dataflow::BorrowckAnalyses<rustc_mir_dataflow::framework::engine::Results<rustc_borrowck::dataflow::Borrows>, rustc_mir_dataflow::framework::engine::Results<rustc_mir_dataflow::impls::MaybeUninitializedPlaces>, rustc_mir_dataflow::framework::engine::Results<rustc_mir_dataflow::impls::EverInitializedPlaces>>, core::iter::adapters::map::Map<rustc_middle::mir::traversal::ReversePostorderIter, rustc_borrowck::do_mir_borrowck::{closure#2}>, rustc_borrowck::MirBorrowckCtxt>
     15,512,497    <core::result::Result<rustc_middle::ty::subst::GenericArg, rustc_middle::ty::error::TypeError> as rustc_type_ir::CollectAndApply<rustc_middle::ty::subst::GenericArg, &rustc_middle::ty::list::List<rustc_middle::ty::subst::GenericArg>>>::collect_and_apply::<core::iter::adapters::map::Map<core::iter::adapters::zip::Zip<core::iter::adapters::copied::Copied<core::slice::iter::Iter<rustc_middle::ty::subst::GenericArg>>, core::iter::adapters::copied::Copied<core::slice::iter::Iter<rustc_middle::ty::subst::GenericArg>>>, rustc_middle::ty::relate::relate_substs<rustc_infer::infer::sub::Sub>::{closure#0}>, <rustc_middle::ty::context::TyCtxt>::mk_substs_from_iter<core::iter::adapters::map::Map<core::iter::adapters::zip::Zip<core::iter::adapters::copied::Copied<core::slice::iter::Iter<rustc_middle::ty::subst::GenericArg>>, core::iter::adapters::copied::Copied<core::slice::iter::Iter<rustc_middle::ty::subst::GenericArg>>>, rustc_middle::ty::relate::relate_substs<rustc_infer::infer::sub::Sub>::{closure#0}>, core::result::Result<rustc_middle::ty::subst::GenericArg, rustc_middle::ty::error::TypeError>>::{closure#0}>
    -14,853,625    <rustc_infer::infer::InferCtxt>::commit_if_ok::<rustc_trait_selection::traits::project::ProjectAndUnifyResult, rustc_infer::traits::project::MismatchedProjectionTypes, rustc_trait_selection::traits::project::poly_project_and_unify_type::{closure#0}>
     14,845,309    <rustc_infer::infer::InferCtxt>::rollback_to
     14,772,540    rustc_middle::ty::relate::structurally_relate_tys::<rustc_infer::infer::equate::Equate>
     14,354,749    <rustc_infer::infer::at::At>::sub_exp::<rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::TraitRef>>
    -13,888,693    <rustc_borrowck::MirBorrowckCtxt>::access_place
    -13,692,005    <rustc_middle::ty::context::CtxtInterners>::intern_ty
     13,606,462    <rustc_trait_selection::traits::select::SelectionContext>::evaluate_predicates_recursively::<alloc::vec::into_iter::IntoIter<rustc_infer::traits::Obligation<rustc_middle::ty::Predicate>>>
     13,361,408    <smallvec::SmallVec<[rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::ExistentialPredicate>; 8]> as core::iter::traits::collect::Extend<<[rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::ExistentialPredicate>; 8] as smallvec::Array>::Item>>::extend::<core::iter::adapters::GenericShunt<core::iter::adapters::map::Map<core::iter::adapters::zip::Zip<alloc::vec::into_iter::IntoIter<rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::ExistentialPredicate>>, alloc::vec::into_iter::IntoIter<rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::ExistentialPredicate>>>, <&rustc_middle::ty::list::List<rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::ExistentialPredicate>> as rustc_middle::ty::relate::Relate>::relate<rustc_infer::infer::generalize::Generalizer<rustc_infer::infer::generalize::CombineDelegate>>::{closure#2}>, core::result::Result<core::convert::Infallible, rustc_middle::ty::error::TypeError>>>
     12,782,860    <rustc_trait_selection::traits::select::SelectionContext>::evaluate_predicate_recursively
     12,038,351    <rustc_infer::infer::InferCtxt>::canonicalize_query_keep_static::<rustc_middle::ty::ParamEnvAnd<rustc_middle::ty::sty::AliasTy>>
     11,546,782    rustc_const_eval::transform::promote_consts::collect_temps_and_candidates
     11,013,032    rustc_mir_dataflow::drop_flag_effects::on_all_children_bits::on_all_children_bits::<rustc_mir_dataflow::drop_flag_effects::drop_flag_effects_for_location<<rustc_mir_dataflow::impls::MaybeInitializedPlaces as rustc_mir_dataflow::framework::GenKillAnalysis>::terminator_effect<rustc_index::bit_set::ChunkedBitSet<rustc_mir_dataflow::move_paths::MovePathIndex>>::{closure#0}>::{closure#0}>
     10,982,374    <rustc_resolve::Resolver>::resolve_path_with_ribs
    -10,965,759    <dyn rustc_hir_analysis::astconv::AstConv>::ast_ty_to_ty_inner::{closure#0}
     10,940,769    <rustc_hir_typeck::inherited::Inherited>::register_predicate
     10,208,732    rustc_trait_selection::traits::project::opt_normalize_projection_type
     10,196,443    rustc_trait_selection::traits::project::project_and_unify_type
     -9,802,374    <core::result::Result<rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::ExistentialPredicate>, rustc_middle::ty::error::TypeError> as rustc_type_ir::CollectAndApply<rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::ExistentialPredicate>, &rustc_middle::ty::list::List<rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::ExistentialPredicate>>>>::collect_and_apply::<core::iter::adapters::map::Map<core::iter::adapters::zip::Zip<alloc::vec::into_iter::IntoIter<rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::ExistentialPredicate>>, alloc::vec::into_iter::IntoIter<rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::ExistentialPredicate>>>, <&rustc_middle::ty::list::List<rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::ExistentialPredicate>> as rustc_middle::ty::relate::Relate>::relate<rustc_infer::infer::generalize::Generalizer<rustc_infer::infer::generalize::CombineDelegate>>::{closure#2}>, <rustc_middle::ty::context::TyCtxt>::mk_poly_existential_predicates_from_iter<core::iter::adapters::map::Map<core::iter::adapters::zip::Zip<alloc::vec::into_iter::IntoIter<rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::ExistentialPredicate>>, alloc::vec::into_iter::IntoIter<rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::ExistentialPredicate>>>, <&rustc_middle::ty::list::List<rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::ExistentialPredicate>> as rustc_middle::ty::relate::Relate>::relate<rustc_infer::infer::generalize::Generalizer<rustc_infer::infer::generalize::CombineDelegate>>::{closure#2}>, core::result::Result<rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::ExistentialPredicate>, rustc_middle::ty::error::TypeError>>::{closure#0}>
      9,709,475    <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_kind
     -9,504,585    <rustc_infer::infer::sub::Sub as rustc_middle::ty::relate::TypeRelation>::tys
      9,082,606    <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_argument_types
     -9,001,618    <rustc_trait_selection::traits::query::normalize::QueryNormalizer as rustc_type_ir::fold::FallibleTypeFolder<rustc_middle::ty::context::TyCtxt>>::try_fold_ty
     -8,991,467    rustc_trait_selection::traits::project::normalize_with_depth_to::<rustc_middle::ty::Predicate>
     -8,981,921    <rustc_infer::infer::equate::Equate as rustc_middle::ty::relate::TypeRelation>::tys
     -8,972,443    <rustc_ast_lowering::LoweringContext>::lower_expr_mut
      8,874,899    <rustc_infer::infer::outlives::obligations::TypeOutlives<&mut rustc_borrowck::type_check::constraint_conversion::ConstraintConversion>>::alias_ty_must_outlive
     -8,604,845    <rustc_middle::middle::region::Scope>::span
      8,453,951    <rustc_infer::infer::InferCtxt>::commit_if_ok::<(), (), rustc_trait_selection::traits::project::assemble_candidates_from_impls::{closure#0}>
      8,221,104    <rustc_infer::infer::InferCtxt as rustc_trait_selection::infer::InferCtxtExt>::type_is_copy_modulo_regions
      8,094,126    <rustc_borrowck::MirBorrowckCtxt as rustc_mir_dataflow::framework::visitor::ResultsVisitor>::visit_terminator_before_primary_effect
      8,061,238    <rustc_hir_typeck::method::confirm::ConfirmContext>::confirm
      8,060,991    <rustc_infer::infer::generalize::Generalizer<rustc_infer::infer::generalize::CombineDelegate> as rustc_middle::ty::relate::TypeRelation>::tys
      8,054,340    <rustc_borrowck::MirBorrowckCtxt>::mutate_place
      8,040,242    rustc_trait_selection::traits::project::normalize_projection_type
      8,001,024    rustc_mir_build::build::scope::build_scope_drops
      7,821,332    <rustc_mir_dataflow::framework::engine::Engine<rustc_mir_dataflow::impls::EverInitializedPlaces>>::iterate_to_fixpoint
     -7,537,769    <alloc::vec::Vec<rustc_infer::traits::Obligation<rustc_middle::ty::Predicate>> as alloc::vec::spec_from_iter::SpecFromIter<rustc_infer::traits::Obligation<rustc_middle::ty::Predicate>, core::iter::adapters::filter::Filter<core::iter::adapters::map::Map<core::iter::adapters::zip::Zip<core::iter::adapters::zip::Zip<alloc::vec::into_iter::IntoIter<rustc_middle::ty::Predicate>, alloc::vec::into_iter::IntoIter<rustc_span::span_encoding::Span>>, core::iter::adapters::rev::Rev<alloc::vec::into_iter::IntoIter<rustc_span::def_id::DefId>>>, <rustc_trait_selection::traits::wf::WfPredicates>::nominal_obligations_inner::{closure#0}>, <rustc_trait_selection::traits::wf::WfPredicates>::nominal_obligations_inner::{closure#1}>>>::from_iter
      7,493,680    rustc_hir_analysis::astconv::generics::check_generic_arg_count
     -7,242,223    <rustc_mir_build::build::Builder>::match_simplified_candidates
      7,241,910    <dyn rustc_hir_analysis::astconv::AstConv>::associated_path_to_ty
      7,139,006    <rustc_trait_selection::traits::project::AssocTypeNormalizer as rustc_type_ir::fold::TypeFolder<rustc_middle::ty::context::TyCtxt>>::fold_ty
     -7,109,980    <rustc_infer::infer::canonical::canonicalizer::Canonicalizer as rustc_type_ir::fold::TypeFolder<rustc_middle::ty::context::TyCtxt>>::fold_ty
      7,072,822    <dyn rustc_hir_analysis::astconv::AstConv>::instantiate_poly_trait_ref_inner
      7,043,488    <rustc_middle::ty::Ty as rustc_type_ir::fold::TypeSuperFoldable<rustc_middle::ty::context::TyCtxt>>::super_fold_with::<rustc_infer::infer::freshen::TypeFreshener>
      6,959,208    <rustc_mir_dataflow::framework::engine::Engine<rustc_mir_dataflow::impls::MaybeUninitializedPlaces>>::iterate_to_fixpoint
     -6,949,569    rustc_mir_dataflow::drop_flag_effects::on_all_children_bits::on_all_children_bits::<rustc_mir_dataflow::drop_flag_effects::drop_flag_effects_for_location<<rustc_mir_dataflow::impls::MaybeUninitializedPlaces as rustc_mir_dataflow::framework::GenKillAnalysis>::statement_effect<rustc_index::bit_set::ChunkedBitSet<rustc_mir_dataflow::move_paths::MovePathIndex>>::{closure#0}>::{closure#0}>
     -6,728,908    <rustc_middle::ty::context::CtxtInterners>::intern_predicate
      6,699,997    <rustc_infer::infer::canonical::canonicalizer::Canonicalizer>::canonicalize::<rustc_middle::infer::canonical::QueryResponse<()>>
      6,614,492    <rustc_middle::ty::adt::AdtDef>::has_dtor
      6,531,339    <rustc_borrowck::type_check::TypeChecker>::normalize_and_prove_instantiated_predicates
      6,509,885    <rustc_mir_dataflow::framework::engine::Engine<rustc_mir_dataflow::impls::MaybeInitializedPlaces>>::iterate_to_fixpoint
      6,486,773    <rustc_middle::middle::region::ScopeTree>::record_scope_parent
      6,482,655    <rustc_mir_build::build::Builder>::test_candidates
     -6,402,647    <rustc_infer::infer::outlives::obligations::TypeOutlives<&mut rustc_borrowck::type_check::constraint_conversion::ConstraintConversion>>::components_must_outlive
     -6,360,200    <dyn rustc_hir_analysis::astconv::AstConv>::associated_path_to_ty::{closure#0}
      6,359,755    <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_call
     -6,352,743    <rustc_middle::ty::ParamEnvAnd<rustc_middle::traits::query::type_op::Normalize<rustc_middle::ty::Predicate>> as rustc_trait_selection::traits::query::type_op::TypeOp>::fully_perform
      6,231,944    <rustc_lint::late::LateContextAndPass<rustc_lint::BuiltinCombinedModuleLateLintPass> as rustc_hir::intravisit::Visitor>::visit_expr
      5,944,134    <rustc_mir_build::build::Builder>::simplify_candidate
      5,886,573    <&rustc_middle::ty::list::List<rustc_middle::ty::subst::GenericArg> as rustc_type_ir::fold::TypeFoldable<rustc_middle::ty::context::TyCtxt>>::try_fold_with::<rustc_infer::infer::resolve::FullTypeResolver>
      5,783,532    <rustc_parse::parser::Parser>::bump
      5,739,978    <rustc_data_structures::obligation_forest::ObligationForest<rustc_trait_selection::traits::fulfill::PendingPredicateObligation>>::process_obligations::<rustc_trait_selection::traits::fulfill::FulfillProcessor>
      5,660,471    <rustc_infer::infer::InferCtxt>::canonicalize_query_keep_static::<rustc_middle::ty::ParamEnvAnd<rustc_middle::traits::query::type_op::Normalize<rustc_middle::ty::Ty>>>
      5,642,474    <rustc_infer::infer::InferCtxtBuilder as rustc_trait_selection::infer::InferCtxtBuilderExt>::enter_canonical_trait_query::<rustc_middle::ty::ParamEnvAnd<rustc_middle::traits::query::type_op::ProvePredicate>, (), rustc_traits::type_op::type_op_prove_predicate::{closure#0}>
      5,537,949    <rustc_trait_selection::traits::select::SelectionContext>::evaluate_candidate
      5,429,281    rustc_middle::ty::relate::structurally_relate_tys::<rustc_infer::infer::nll_relate::TypeRelating<rustc_borrowck::type_check::relate_tys::NllTypeRelatingDelegate>>
      5,375,684    <rustc_ast_lowering::LoweringContext>::lower_node_id
     -5,311,906    <rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::FnSig> as rustc_type_ir::fold::TypeFoldable<rustc_middle::ty::context::TyCtxt>>::fold_with::<rustc_middle::ty::subst::SubstFolder>
      5,259,469    <rustc_middle::ty::subst::GenericArg as rustc_type_ir::fold::TypeFoldable<rustc_middle::ty::context::TyCtxt>>::try_fold_with::<rustc_infer::infer::freshen::TypeFreshener>
      5,258,417    <rustc_hir_analysis::check::region::RegionResolutionVisitor as rustc_hir::intravisit::Visitor>::visit_expr
      5,188,543    <rustc_mir_build::thir::cx::Cx>::mirror_expr
      5,147,977    rustc_middle::ty::util::fold_list::<rustc_middle::ty::subst::SubstFolder, rustc_middle::ty::Ty, <&rustc_middle::ty::list::List<rustc_middle::ty::Ty> as rustc_type_ir::fold::TypeFoldable<rustc_middle::ty::context::TyCtxt>>::try_fold_with<rustc_middle::ty::subst::SubstFolder>::{closure#0}>
      4,967,472    <rustc_hir_typeck::coercion::Coerce>::coerce
     -4,846,111    <alloc::rc::Rc<rustc_middle::traits::ObligationCauseCode> as alloc::rc::RcEqIdent<rustc_middle::traits::ObligationCauseCode>>::eq
      4,820,240    <rustc_middle::ty::fold::RegionFolder as rustc_type_ir::fold::FallibleTypeFolder<rustc_middle::ty::context::TyCtxt>>::try_fold_region
      4,763,502    <rustc_trait_selection::traits::engine::ObligationCtxt>::register_obligation
      4,689,799    <core::result::Result<rustc_middle::ty::subst::GenericArg, rustc_middle::ty::error::TypeError> as rustc_type_ir::CollectAndApply<rustc_middle::ty::subst::GenericArg, &rustc_middle::ty::list::List<rustc_middle::ty::subst::GenericArg>>>::collect_and_apply::<core::iter::adapters::map::Map<core::iter::adapters::zip::Zip<core::iter::adapters::copied::Copied<core::slice::iter::Iter<rustc_middle::ty::subst::GenericArg>>, core::iter::adapters::copied::Copied<core::slice::iter::Iter<rustc_middle::ty::subst::GenericArg>>>, rustc_middle::ty::relate::relate_substs<rustc_infer::infer::generalize::Generalizer<rustc_infer::infer::generalize::CombineDelegate>>::{closure#0}>, <rustc_middle::ty::context::TyCtxt>::mk_substs_from_iter<core::iter::adapters::map::Map<core::iter::adapters::zip::Zip<core::iter::adapters::copied::Copied<core::slice::iter::Iter<rustc_middle::ty::subst::GenericArg>>, core::iter::adapters::copied::Copied<core::slice::iter::Iter<rustc_middle::ty::subst::GenericArg>>>, rustc_middle::ty::relate::relate_substs<rustc_infer::infer::generalize::Generalizer<rustc_infer::infer::generalize::CombineDelegate>>::{closure#0}>, core::result::Result<rustc_middle::ty::subst::GenericArg, rustc_middle::ty::error::TypeError>>::{closure#0}>
      4,633,777    <rustc_borrowck::type_check::TypeVerifier as rustc_middle::mir::visit::Visitor>::visit_body
     -4,455,208    <rustc_infer::infer::InferCtxt>::probe::<core::result::Result<rustc_middle::traits::select::EvaluationResult, rustc_middle::traits::select::OverflowError>, <rustc_trait_selection::traits::select::SelectionContext>::evaluation_probe<<rustc_trait_selection::traits::select::SelectionContext>::evaluate_candidate::{closure#0}::{closure#0}>::{closure#0}>
      4,362,612    <rustc_middle::traits::ObligationCauseCode as core::cmp::PartialEq>::eq
      4,280,756    <rustc_borrowck::type_check::TypeVerifier as rustc_middle::mir::visit::Visitor>::visit_place
      4,259,031    <rustc_mir_build::thir::pattern::check_match::MatchVisitor as rustc_middle::thir::visit::Visitor>::visit_expr
     -4,240,892    <rustc_mir_build::build::Builder>::match_candidates
      4,045,741    <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_match
      4,012,365    <rustc_hir_typeck::coercion::Coerce>::coerce_unsized
      3,927,621    <rustc_hir_typeck::writeback::WritebackCx as rustc_hir::intravisit::Visitor>::visit_pat
      3,768,224    <rustc_borrowck::region_infer::RegionInferenceContext>::new
     -3,536,539    <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_match::{closure#0}
      3,481,528    <rustc_trait_selection::traits::fulfill::FulfillmentContext as rustc_infer::traits::engine::TraitEngine>::select_where_possible
      3,463,316    <rustc_mir_build::build::Builder>::declare_bindings::{closure#0}
     -3,461,431    <rustc_hir_typeck::inherited::Inherited>::register_predicates::<alloc::vec::Vec<rustc_infer::traits::Obligation<rustc_middle::ty::Predicate>>>
      3,461,260    <rustc_hir_typeck::fn_ctxt::FnCtxt>::require_type_is_sized
      3,445,873    <rustc_infer::traits::util::Elaborator<rustc_middle::ty::Predicate> as core::iter::traits::iterator::Iterator>::next
      3,409,674    rustc_hir_analysis::astconv::generics::check_generic_arg_count_for_call
      3,340,577    rustc_middle::ty::relate::relate_substs_with_variances::<rustc_infer::infer::nll_relate::TypeRelating<rustc_borrowck::type_check::relate_tys::NllTypeRelatingDelegate>>
     -3,328,601    <rustc_infer::infer::at::At as rustc_trait_selection::traits::project::NormalizeExt>::normalize::<(rustc_middle::ty::sty::FnSig, rustc_middle::ty::InstantiatedPredicates)>
      3,316,533    <rustc_resolve::late::LateResolutionVisitor>::smart_resolve_path_fragment
      3,271,576    <rustc_infer::infer::InferCtxt>::probe::<rustc_hir_typeck::method::probe::ProbeResult, <rustc_hir_typeck::method::probe::ProbeContext>::consider_probe::{closure#0}>
      3,263,608    <rustc_middle::ty::generics::GenericPredicates>::instantiate_into
      3,251,049    <rustc_infer::infer::at::At>::eq::<rustc_middle::ty::sty::TraitRef>
      3,202,478    rustc_trait_selection::traits::project::normalize_with_depth::<(rustc_middle::ty::sty::FnSig, rustc_middle::ty::InstantiatedPredicates)>
      3,159,709    <rustc_middle::ty::subst::SubstFolder as rustc_type_ir::fold::FallibleTypeFolder<rustc_middle::ty::context::TyCtxt>>::try_fold_ty
      3,088,648    <rustc_infer::infer::InferCtxt>::canonicalize_query_keep_static::<rustc_middle::ty::ParamEnvAnd<rustc_middle::traits::query::type_op::Normalize<rustc_middle::ty::Predicate>>>
     -3,066,812    <rustc_resolve::Resolver>::resolve_ident_in_module_unadjusted_ext
      3,030,020    <rustc_passes::liveness::Liveness>::propagate_through_expr
     -3,027,290    <[rustc_hir::hir::PathSegment] as rustc_data_structures::stable_hasher::HashStable<rustc_query_system::ich::hcx::StableHashingContext>>::hash_stable
     -2,983,740    <rustc_middle::ty::sty::TraitRef>::new::<&rustc_middle::ty::list::List<rustc_middle::ty::subst::GenericArg>>
      2,911,820    rustc_mir_build::thir::pattern::usefulness::is_useful
     -2,909,027    <rustc_mir_build::build::Builder>::expr_into_dest
      2,880,671    <rustc_ast_lowering::index::NodeCollector as rustc_hir::intravisit::Visitor>::visit_expr
      2,833,758    <rustc_infer::infer::freshen::TypeFreshener as rustc_type_ir::fold::FallibleTypeFolder<rustc_middle::ty::context::TyCtxt>>::try_fold_ty
      2,767,946    <rustc_borrowck::used_muts::GatherUsedMutsVisitor as rustc_middle::mir::visit::Visitor>::super_body
      2,741,632    <rustc_trait_selection::traits::engine::ObligationCtxt>::register_obligations::<alloc::vec::Vec<rustc_infer::traits::Obligation<rustc_middle::ty::Predicate>>>
      2,710,599    <rustc_hir_typeck::writeback::WritebackCx>::visit_node_id
     -2,704,028    rustc_trait_selection::traits::project::normalize_with_depth::<rustc_middle::ty::sty::TraitRef>
     -2,694,193    <rustc_middle::ty::context::TyCtxt>::late_bound_vars
      2,664,433    <rustc_infer::infer::InferCtxt>::fudge_inference_if_ok::<core::option::Option<alloc::vec::Vec<rustc_middle::ty::Ty>>, rustc_middle::ty::error::TypeError, <rustc_hir_typeck::fn_ctxt::FnCtxt>::expected_inputs_for_expected_output::{closure#0}>
      2,637,789    rustc_borrowck::places_conflict::borrow_conflicts_with_place
      2,591,324    <rustc_infer::infer::InferCtxt>::resolve_vars_if_possible::<rustc_middle::ty::Ty>
      2,569,502    rustc_trait_selection::traits::wf::obligations
     -2,526,048    <rustc_trait_selection::traits::select::SelectionContext>::match_impl
      2,516,070    <rustc_trait_selection::traits::engine::ObligationCtxt>::normalize::<rustc_middle::ty::InstantiatedPredicates>
      2,507,976    <rustc_infer::infer::outlives::verify::VerifyBoundCx>::param_bound
      2,490,666    <rustc_hir_typeck::fn_ctxt::FnCtxt>::write_method_call
      2,449,629    <rustc_mir_build::build::scope::DropTree>::build_mir::<rustc_mir_build::build::scope::Unwind>
      2,419,584    <rustc_hir::def::Res as rustc_data_structures::stable_hasher::HashStable<rustc_query_system::ich::hcx::StableHashingContext>>::hash_stable
     -2,391,319    <rustc_mir_build::build::Builder>::visit_primary_bindings::<<rustc_mir_build::build::Builder>::declare_bindings::{closure#0}>
      2,374,961    <rustc_middle::ty::ParamEnvAnd<rustc_middle::traits::query::type_op::ProvePredicate> as rustc_trait_selection::traits::query::type_op::TypeOp>::fully_perform
      2,373,613    <rustc_infer::infer::at::At as rustc_trait_selection::traits::project::NormalizeExt>::normalize::<&rustc_middle::ty::list::List<rustc_middle::ty::subst::GenericArg>>
      2,356,943    rustc_borrowck::nll::compute_regions
      2,343,621    <rustc_borrowck::type_check::TypeVerifier as rustc_middle::mir::visit::Visitor>::visit_operand
      2,339,307    <rustc_infer::infer::InferCtxt>::commit_if_ok::<rustc_infer::infer::InferOk<(alloc::vec::Vec<rustc_middle::ty::adjustment::Adjustment>, rustc_middle::ty::Ty)>, rustc_middle::ty::error::TypeError, <rustc_hir_typeck::coercion::Coerce>::coerce::{closure#1}>
      2,338,850    <rustc_mir_build::thir::cx::Cx>::make_mirror_unadjusted::{closure#0}
      2,308,128    <rustc_hir_typeck::fn_ctxt::FnCtxt>::normalize::<rustc_middle::ty::Ty>
      2,292,833    <rustc_infer::infer::InferCtxt>::probe::<bool, <rustc_trait_selection::traits::select::SelectionContext>::match_projection_obligation_against_definition_bounds::{closure#0}::{closure#0}::{closure#0}>
      2,269,215    <rustc_middle::ty::subst::GenericArg as rustc_type_ir::fold::TypeFoldable<rustc_middle::ty::context::TyCtxt>>::try_fold_with::<rustc_middle::ty::subst::SubstFolder>
      2,243,378    <rustc_data_structures::obligation_forest::ObligationForest<rustc_trait_selection::traits::fulfill::PendingPredicateObligation>>::compress::<<rustc_data_structures::obligation_forest::ObligationForest<rustc_trait_selection::traits::fulfill::PendingPredicateObligation>>::process_obligations<rustc_trait_selection::traits::fulfill::FulfillProcessor>::{closure#1}>
      2,226,149    <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_path
      2,210,508    <&mut <rustc_ast_lowering::LoweringContext>::lower_angle_bracketed_parameter_data::{closure#1} as core::ops::function::FnMut<(&rustc_ast::ast::AngleBracketedArg,)>>::call_mut
      2,170,661    <rustc_ast_lowering::index::NodeCollector as rustc_hir::intravisit::Visitor>::visit_ty
     -2,151,700    <rustc_parse::parser::Parser>::break_and_eat
      2,151,087    rustc_trait_selection::traits::project::normalize_with_depth::<rustc_middle::ty::Predicate>
     -2,124,990    rustc_hir_analysis::check::wfcheck::check_where_clauses
      2,122,024    <rustc_borrowck::region_infer::RegionInferenceContext>::solve
      2,118,299    <rustc_infer::infer::InferCtxtBuilder as rustc_trait_selection::infer::InferCtxtBuilderExt>::enter_canonical_trait_query::<rustc_middle::ty::ParamEnvAnd<rustc_middle::ty::Ty>, rustc_middle::traits::query::DropckOutlivesResult, rustc_traits::dropck_outlives::dropck_outlives::{closure#0}>
      2,105,352    <rustc_mir_build::build::CFG>::terminate
     -2,087,481    <rustc_mir_build::build::Builder>::expr_as_place
     -2,040,229    <rustc_ast_lowering::LoweringContext>::lower_generic_param
      2,031,224    <rustc_infer::infer::resolve::FullTypeResolver as rustc_type_ir::fold::FallibleTypeFolder<rustc_middle::ty::context::TyCtxt>>::try_fold_ty
      2,010,479    <rustc_hir_typeck::fn_ctxt::FnCtxt>::try_coerce
      1,997,305    <&rustc_middle::ty::list::List<rustc_middle::ty::subst::GenericArg> as rustc_middle::ty::visit::TypeVisitableExt>::has_type_flags
      1,995,512    <rustc_parse::parser::Parser>::eat_lt
      1,986,305    rustc_middle::ty::relate::structurally_relate_tys::<rustc_infer::infer::sub::Sub>
      1,963,008    <rustc_mir_dataflow::move_paths::builder::Gatherer>::gather_init

<     9,546,647  ./string/../sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S:__memcpy_avx_unaligned_erms

--------------------------------------------------------------------------------
-- Function:file summary
--------------------------------------------------------------------------------
  Ir___________  function:file

> 1,081,075,477  <rustc_trait_selection::traits::select::SelectionContext>::assemble_candidates:???

>  -717,453,415  <rustc_trait_selection::traits::select::SelectionContext>::candidate_from_obligation_no_cache:???

>   248,766,486  <rustc_trait_selection::traits::select::SelectionContext>::confirm_candidate:???

>   200,840,982  rustc_mir_transform::simplify::simplify_cfg:???

>  -198,530,838  <rustc_mir_transform::simplify::SimplifyCfg as rustc_middle::mir::MirPass>::run_pass:???

>   183,560,582  <rustc_infer::infer::resolve::OpportunisticVarResolver as rustc_type_ir::fold::FallibleTypeFolder<rustc_middle::ty::context::TyCtxt>>::try_fold_ty:???

>   149,370,676  <rustc_trait_selection::traits::wf::WfPredicates>::nominal_obligations_inner:???

>  -123,481,103  <rustc_trait_selection::traits::wf::WfPredicates>::compute:???

>    90,448,027  <rustc_ast_lowering::LoweringContext>::lower_qpath:???

>    81,394,368  <rustc_infer::infer::combine::CombineFields>::instantiate:???

>    79,113,231  <rustc_trait_selection::traits::fulfill::FulfillProcessor as rustc_data_structures::obligation_forest::ObligationProcessor>::process_obligation:???

>    56,892,823  <core::iter::adapters::map::Map<core::iter::adapters::enumerate::Enumerate<core::slice::iter::Iter<(rustc_middle::ty::Predicate, rustc_span::span_encoding::Span)>>, <rustc_infer::traits::util::Elaborator<rustc_middle::ty::Predicate>>::elaborate::{closure#0}> as core::iter::traits::iterator::Iterator>::try_fold::<(), core::iter::traits::iterator::Iterator::find::check<rustc_middle::ty::Predicate, &mut <rustc_infer::traits::util::Elaborator<rustc_middle::ty::Predicate>>::extend_deduped<core::iter::adapters::map::Map<core::iter::adapters::enumerate::Enumerate<core::slice::iter::Iter<(rustc_middle::ty::Predicate, rustc_span::span_encoding::Span)>>, <rustc_infer::traits::util::Elaborator<rustc_middle::ty::Predicate>>::elaborate::{closure#0}>>::{closure#0}>::{closure#0}, core::ops::control_flow::ControlFlow<rustc_middle::ty::Predicate>>:???

>   -56,269,612  <alloc::vec::Vec<rustc_middle::ty::Predicate> as alloc::vec::spec_extend::SpecExtend<rustc_middle::ty::Predicate, core::iter::adapters::filter::Filter<core::iter::adapters::map::Map<core::iter::adapters::enumerate::Enumerate<core::slice::iter::Iter<(rustc_middle::ty::Predicate, rustc_span::span_encoding::Span)>>, <rustc_infer::traits::util::Elaborator<rustc_middle::ty::Predicate>>::elaborate::{closure#0}>, <rustc_infer::traits::util::Elaborator<rustc_middle::ty::Predicate>>::extend_deduped<core::iter::adapters::map::Map<core::iter::adapters::enumerate::Enumerate<core::slice::iter::Iter<(rustc_middle::ty::Predicate, rustc_span::span_encoding::Span)>>, <rustc_infer::traits::util::Elaborator<rustc_middle::ty::Predicate>>::elaborate::{closure#0}>>::{closure#0}>>>::spec_extend:???

>    54,580,431  rustc_trait_selection::traits::do_normalize_predicates:???

>    53,546,878  <rustc_data_structures::graph::scc::SccsConstruction<rustc_borrowck::constraints::graph::RegionGraph<rustc_borrowck::constraints::graph::Normal>, rustc_borrowck::constraints::ConstraintSccIndex>>::start_walk_from:???

>    48,069,305  <rustc_trait_selection::traits::fulfill::FulfillmentContext as rustc_infer::traits::engine::TraitEngine>::register_predicate_obligation:???

>    47,601,664  <rustc_middle::mir::syntax::Place>::ty::<rustc_middle::mir::Body>:???

>    44,995,408  <rustc_infer::traits::Obligation<rustc_middle::ty::Predicate> as rustc_type_ir::fold::TypeFoldable<rustc_middle::ty::context::TyCtxt>>::fold_with::<rustc_infer::infer::resolve::OpportunisticVarResolver>:???

>   -44,925,627  <rustc_ast_lowering::LoweringContext>::lower_path_segment:???

>   -42,819,898  <core::iter::adapters::map::Map<core::iter::adapters::map::Map<core::ops::range::Range<usize>, <rustc_middle::ty::sty::RegionVid as rustc_index::idx::Idx>::new>, <rustc_data_structures::graph::scc::SccsConstruction<rustc_borrowck::constraints::graph::RegionGraph<rustc_borrowck::constraints::graph::Normal>, rustc_borrowck::constraints::ConstraintSccIndex>>::construct::{closure#0}> as core::iter::traits::iterator::Iterator>::fold::<(), core::iter::traits::iterator::Iterator::for_each::call<rustc_borrowck::constraints::ConstraintSccIndex, <alloc::vec::Vec<rustc_borrowck::constraints::ConstraintSccIndex>>::extend_trusted<core::iter::adapters::map::Map<core::iter::adapters::map::Map<core::ops::range::Range<usize>, <rustc_middle::ty::sty::RegionVid as rustc_index::idx::Idx>::new>, <rustc_data_structures::graph::scc::SccsConstruction<rustc_borrowck::constraints::graph::RegionGraph<rustc_borrowck::constraints::graph::Normal>, rustc_borrowck::constraints::ConstraintSccIndex>>::construct::{closure#0}>>::{closure#0}>::{closure#0}>:???

>   -42,533,480  <rustc_trait_selection::traits::select::SelectionContext>::select:???

>    41,054,984  <rustc_hir::hir::QPath as rustc_data_structures::stable_hasher::HashStable<rustc_query_system::ich::hcx::StableHashingContext>>::hash_stable:???

>    38,740,639  <&rustc_middle::ty::list::List<rustc_middle::ty::subst::GenericArg> as rustc_type_ir::fold::TypeFoldable<rustc_middle::ty::context::TyCtxt>>::try_fold_with::<rustc_middle::ty::subst::SubstFolder>:???

>    35,433,561  <rustc_infer::infer::region_constraints::RegionConstraintCollector>::make_eqregion:???

>    35,115,245  <alloc::vec::Vec<rustc_middle::ty::sty::Binder<rustc_middle::ty::OutlivesPredicate<rustc_middle::ty::Ty, rustc_middle::ty::sty::Region>>> as alloc::vec::spec_from_iter::SpecFromIter<rustc_middle::ty::sty::Binder<rustc_middle::ty::OutlivesPredicate<rustc_middle::ty::Ty, rustc_middle::ty::sty::Region>>, core::iter::adapters::inspect::Inspect<core::iter::adapters::chain::Chain<core::iter::adapters::filter::Filter<core::iter::adapters::filter_map::FilterMap<core::iter::adapters::copied::Copied<core::slice::iter::Iter<rustc_middle::ty::Predicate>>, <rustc_infer::infer::outlives::verify::VerifyBoundCx>::collect_outlives_from_predicate_list<core::iter::adapters::copied::Copied<core::slice::iter::Iter<rustc_middle::ty::Predicate>>>::{closure#0}>, <rustc_infer::infer::outlives::verify::VerifyBoundCx>::collect_outlives_from_predicate_list<core::iter::adapters::copied::Copied<core::slice::iter::Iter<rustc_middle::ty::Predicate>>>::{closure#1}>, core::iter::adapters::filter_map::FilterMap<indexmap::set::Iter<rustc_middle::ty::OutlivesPredicate<rustc_infer::infer::region_constraints::GenericKind, rustc_middle::ty::sty::Region>>, <rustc_infer::infer::outlives::verify::VerifyBoundCx>::declared_generic_bounds_from_env_for_erased_ty::{closure#0}>>, <rustc_infer::infer::outlives::verify::VerifyBoundCx>::declared_generic_bounds_from_env_for_erased_ty::{closure#1}>>>::from_iter:???

>   -33,874,307  rustc_trait_selection::traits::normalize_param_env_or_error:???

>    31,671,648  <rustc_borrowck::type_check::TypeChecker>::typeck_mir:???

>    31,478,570  <rustc_trait_selection::traits::select::SelectionContext>::match_projection_projections:???

>   -31,445,396  <rustc_infer::infer::InferCtxt>::commit_if_ok::<rustc_infer::infer::InferOk<()>, rustc_middle::ty::error::TypeError, <rustc_infer::infer::at::Trace>::sub<rustc_middle::ty::sty::AliasTy>::{closure#0}>:???

>   -30,211,730  <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_with_expectation_and_args:???

>   -30,084,059  <rustc_infer::infer::equate::Equate as rustc_middle::ty::relate::TypeRelation>::relate::<rustc_middle::ty::sty::Region>:???

>    26,272,474  <rustc_mir_dataflow::move_paths::builder::Gatherer>::gather_move:???

>    25,643,399  <rustc_mir_build::build::Builder>::as_temp_inner:???

>   -24,178,256  <rustc_mir_build::build::Builder>::as_operand:???

>    22,248,699  rustc_middle::ty::relate::structurally_relate_tys::<rustc_infer::infer::generalize::Generalizer<rustc_infer::infer::generalize::CombineDelegate>>:???

>   -21,343,815  <rustc_span::span_encoding::Span as rustc_data_structures::stable_hasher::HashStable<rustc_query_system::ich::hcx::StableHashingContext>>::hash_stable:???

>    21,038,810  <&rustc_middle::ty::list::List<rustc_middle::ty::subst::GenericArg> as rustc_type_ir::fold::TypeFoldable<rustc_middle::ty::context::TyCtxt>>::try_fold_with::<rustc_infer::infer::freshen::TypeFreshener>:???

>    19,762,331  <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_with_expectation:???

>    19,326,021  <rustc_hir_typeck::writeback::WritebackCx as rustc_hir::intravisit::Visitor>::visit_expr:???

>    19,237,007  <rustc_span::source_map::SourceMap>::end_point:???

>   -18,863,525  <rustc_ast_lowering::LoweringContext>::lower_ty_direct:???

>    18,123,426  <rustc_borrowck::MirBorrowckCtxt as rustc_mir_dataflow::framework::visitor::ResultsVisitor>::visit_statement_before_primary_effect:???

>    17,024,084  <rustc_trait_selection::traits::select::SelectionContext>::evaluate_stack:???

>   -16,879,739  rustc_mir_dataflow::drop_flag_effects::on_all_children_bits::on_all_children_bits::<rustc_mir_dataflow::drop_flag_effects::drop_flag_effects_for_location<<rustc_mir_dataflow::impls::MaybeInitializedPlaces as rustc_mir_dataflow::framework::GenKillAnalysis>::statement_effect<rustc_index::bit_set::ChunkedBitSet<rustc_mir_dataflow::move_paths::MovePathIndex>>::{closure#0}>::{closure#0}>:???

>   -16,354,346  <rustc_infer::infer::InferCtxt>::fully_resolve::<alloc::vec::Vec<rustc_middle::ty::Predicate>>:???

>   -16,210,561  rustc_mir_dataflow::move_paths::builder::gather_moves:???

>    15,993,068  <dyn rustc_hir_analysis::astconv::AstConv>::ast_ty_to_ty_inner:???

>   -15,941,424  <rustc_hir::hir::TyKind as rustc_data_structures::stable_hasher::HashStable<rustc_query_system::ich::hcx::StableHashingContext>>::hash_stable:???

>    15,677,880  rustc_mir_dataflow::framework::visitor::visit_results::<rustc_borrowck::dataflow::BorrowckAnalyses<rustc_index::bit_set::BitSet<rustc_borrowck::dataflow::BorrowIndex>, rustc_index::bit_set::ChunkedBitSet<rustc_mir_dataflow::move_paths::MovePathIndex>, rustc_index::bit_set::ChunkedBitSet<rustc_mir_dataflow::move_paths::InitIndex>>, rustc_borrowck::dataflow::BorrowckAnalyses<rustc_mir_dataflow::framework::engine::Results<rustc_borrowck::dataflow::Borrows>, rustc_mir_dataflow::framework::engine::Results<rustc_mir_dataflow::impls::MaybeUninitializedPlaces>, rustc_mir_dataflow::framework::engine::Results<rustc_mir_dataflow::impls::EverInitializedPlaces>>, core::iter::adapters::map::Map<rustc_middle::mir::traversal::ReversePostorderIter, rustc_borrowck::do_mir_borrowck::{closure#2}>, rustc_borrowck::MirBorrowckCtxt>:???

>    15,512,497  <core::result::Result<rustc_middle::ty::subst::GenericArg, rustc_middle::ty::error::TypeError> as rustc_type_ir::CollectAndApply<rustc_middle::ty::subst::GenericArg, &rustc_middle::ty::list::List<rustc_middle::ty::subst::GenericArg>>>::collect_and_apply::<core::iter::adapters::map::Map<core::iter::adapters::zip::Zip<core::iter::adapters::copied::Copied<core::slice::iter::Iter<rustc_middle::ty::subst::GenericArg>>, core::iter::adapters::copied::Copied<core::slice::iter::Iter<rustc_middle::ty::subst::GenericArg>>>, rustc_middle::ty::relate::relate_substs<rustc_infer::infer::sub::Sub>::{closure#0}>, <rustc_middle::ty::context::TyCtxt>::mk_substs_from_iter<core::iter::adapters::map::Map<core::iter::adapters::zip::Zip<core::iter::adapters::copied::Copied<core::slice::iter::Iter<rustc_middle::ty::subst::GenericArg>>, core::iter::adapters::copied::Copied<core::slice::iter::Iter<rustc_middle::ty::subst::GenericArg>>>, rustc_middle::ty::relate::relate_substs<rustc_infer::infer::sub::Sub>::{closure#0}>, core::result::Result<rustc_middle::ty::subst::GenericArg, rustc_middle::ty::error::TypeError>>::{closure#0}>:???

>   -14,853,625  <rustc_infer::infer::InferCtxt>::commit_if_ok::<rustc_trait_selection::traits::project::ProjectAndUnifyResult, rustc_infer::traits::project::MismatchedProjectionTypes, rustc_trait_selection::traits::project::poly_project_and_unify_type::{closure#0}>:???

>    14,845,309  <rustc_infer::infer::InferCtxt>::rollback_to:???

>    14,772,540  rustc_middle::ty::relate::structurally_relate_tys::<rustc_infer::infer::equate::Equate>:???

>    14,354,749  <rustc_infer::infer::at::At>::sub_exp::<rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::TraitRef>>:???

>   -13,888,693  <rustc_borrowck::MirBorrowckCtxt>::access_place:???

>   -13,692,005  <rustc_middle::ty::context::CtxtInterners>::intern_ty:???

>    13,606,462  <rustc_trait_selection::traits::select::SelectionContext>::evaluate_predicates_recursively::<alloc::vec::into_iter::IntoIter<rustc_infer::traits::Obligation<rustc_middle::ty::Predicate>>>:???

>    13,361,408  <smallvec::SmallVec<[rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::ExistentialPredicate>; 8]> as core::iter::traits::collect::Extend<<[rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::ExistentialPredicate>; 8] as smallvec::Array>::Item>>::extend::<core::iter::adapters::GenericShunt<core::iter::adapters::map::Map<core::iter::adapters::zip::Zip<alloc::vec::into_iter::IntoIter<rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::ExistentialPredicate>>, alloc::vec::into_iter::IntoIter<rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::ExistentialPredicate>>>, <&rustc_middle::ty::list::List<rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::ExistentialPredicate>> as rustc_middle::ty::relate::Relate>::relate<rustc_infer::infer::generalize::Generalizer<rustc_infer::infer::generalize::CombineDelegate>>::{closure#2}>, core::result::Result<core::convert::Infallible, rustc_middle::ty::error::TypeError>>>:???

>    12,782,860  <rustc_trait_selection::traits::select::SelectionContext>::evaluate_predicate_recursively:???

>    12,038,351  <rustc_infer::infer::InferCtxt>::canonicalize_query_keep_static::<rustc_middle::ty::ParamEnvAnd<rustc_middle::ty::sty::AliasTy>>:???

>    11,546,782  rustc_const_eval::transform::promote_consts::collect_temps_and_candidates:???

>    11,013,032  rustc_mir_dataflow::drop_flag_effects::on_all_children_bits::on_all_children_bits::<rustc_mir_dataflow::drop_flag_effects::drop_flag_effects_for_location<<rustc_mir_dataflow::impls::MaybeInitializedPlaces as rustc_mir_dataflow::framework::GenKillAnalysis>::terminator_effect<rustc_index::bit_set::ChunkedBitSet<rustc_mir_dataflow::move_paths::MovePathIndex>>::{closure#0}>::{closure#0}>:???

>    10,982,374  <rustc_resolve::Resolver>::resolve_path_with_ribs:???

>   -10,965,759  <dyn rustc_hir_analysis::astconv::AstConv>::ast_ty_to_ty_inner::{closure#0}:???

>    10,940,769  <rustc_hir_typeck::inherited::Inherited>::register_predicate:???

>    10,208,732  rustc_trait_selection::traits::project::opt_normalize_projection_type:???

>    10,196,443  rustc_trait_selection::traits::project::project_and_unify_type:???

>    -9,802,374  <core::result::Result<rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::ExistentialPredicate>, rustc_middle::ty::error::TypeError> as rustc_type_ir::CollectAndApply<rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::ExistentialPredicate>, &rustc_middle::ty::list::List<rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::ExistentialPredicate>>>>::collect_and_apply::<core::iter::adapters::map::Map<core::iter::adapters::zip::Zip<alloc::vec::into_iter::IntoIter<rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::ExistentialPredicate>>, alloc::vec::into_iter::IntoIter<rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::ExistentialPredicate>>>, <&rustc_middle::ty::list::List<rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::ExistentialPredicate>> as rustc_middle::ty::relate::Relate>::relate<rustc_infer::infer::generalize::Generalizer<rustc_infer::infer::generalize::CombineDelegate>>::{closure#2}>, <rustc_middle::ty::context::TyCtxt>::mk_poly_existential_predicates_from_iter<core::iter::adapters::map::Map<core::iter::adapters::zip::Zip<alloc::vec::into_iter::IntoIter<rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::ExistentialPredicate>>, alloc::vec::into_iter::IntoIter<rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::ExistentialPredicate>>>, <&rustc_middle::ty::list::List<rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::ExistentialPredicate>> as rustc_middle::ty::relate::Relate>::relate<rustc_infer::infer::generalize::Generalizer<rustc_infer::infer::generalize::CombineDelegate>>::{closure#2}>, core::result::Result<rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::ExistentialPredicate>, rustc_middle::ty::error::TypeError>>::{closure#0}>:???

>     9,709,475  <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_kind:???

>     9,546,647  __memcpy_avx_unaligned_erms:./string/../sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S

>    -9,504,585  <rustc_infer::infer::sub::Sub as rustc_middle::ty::relate::TypeRelation>::tys:???

>     9,082,606  <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_argument_types:???

>    -9,001,618  <rustc_trait_selection::traits::query::normalize::QueryNormalizer as rustc_type_ir::fold::FallibleTypeFolder<rustc_middle::ty::context::TyCtxt>>::try_fold_ty:???

>    -8,991,467  rustc_trait_selection::traits::project::normalize_with_depth_to::<rustc_middle::ty::Predicate>:???

>    -8,981,921  <rustc_infer::infer::equate::Equate as rustc_middle::ty::relate::TypeRelation>::tys:???

>    -8,972,443  <rustc_ast_lowering::LoweringContext>::lower_expr_mut:???

>     8,874,899  <rustc_infer::infer::outlives::obligations::TypeOutlives<&mut rustc_borrowck::type_check::constraint_conversion::ConstraintConversion>>::alias_ty_must_outlive:???

>    -8,604,845  <rustc_middle::middle::region::Scope>::span:???

>     8,453,951  <rustc_infer::infer::InferCtxt>::commit_if_ok::<(), (), rustc_trait_selection::traits::project::assemble_candidates_from_impls::{closure#0}>:???

>     8,221,104  <rustc_infer::infer::InferCtxt as rustc_trait_selection::infer::InferCtxtExt>::type_is_copy_modulo_regions:???

>     8,094,126  <rustc_borrowck::MirBorrowckCtxt as rustc_mir_dataflow::framework::visitor::ResultsVisitor>::visit_terminator_before_primary_effect:???

>     8,061,238  <rustc_hir_typeck::method::confirm::ConfirmContext>::confirm:???

>     8,060,991  <rustc_infer::infer::generalize::Generalizer<rustc_infer::infer::generalize::CombineDelegate> as rustc_middle::ty::relate::TypeRelation>::tys:???

>     8,054,340  <rustc_borrowck::MirBorrowckCtxt>::mutate_place:???

>     8,040,242  rustc_trait_selection::traits::project::normalize_projection_type:???

>     8,001,024  rustc_mir_build::build::scope::build_scope_drops:???

>     7,821,332  <rustc_mir_dataflow::framework::engine::Engine<rustc_mir_dataflow::impls::EverInitializedPlaces>>::iterate_to_fixpoint:???

>    -7,537,769  <alloc::vec::Vec<rustc_infer::traits::Obligation<rustc_middle::ty::Predicate>> as alloc::vec::spec_from_iter::SpecFromIter<rustc_infer::traits::Obligation<rustc_middle::ty::Predicate>, core::iter::adapters::filter::Filter<core::iter::adapters::map::Map<core::iter::adapters::zip::Zip<core::iter::adapters::zip::Zip<alloc::vec::into_iter::IntoIter<rustc_middle::ty::Predicate>, alloc::vec::into_iter::IntoIter<rustc_span::span_encoding::Span>>, core::iter::adapters::rev::Rev<alloc::vec::into_iter::IntoIter<rustc_span::def_id::DefId>>>, <rustc_trait_selection::traits::wf::WfPredicates>::nominal_obligations_inner::{closure#0}>, <rustc_trait_selection::traits::wf::WfPredicates>::nominal_obligations_inner::{closure#1}>>>::from_iter:???

>     7,493,680  rustc_hir_analysis::astconv::generics::check_generic_arg_count:???

>    -7,242,223  <rustc_mir_build::build::Builder>::match_simplified_candidates:???

>     7,241,910  <dyn rustc_hir_analysis::astconv::AstConv>::associated_path_to_ty:???

>     7,139,006  <rustc_trait_selection::traits::project::AssocTypeNormalizer as rustc_type_ir::fold::TypeFolder<rustc_middle::ty::context::TyCtxt>>::fold_ty:???

>    -7,109,980  <rustc_infer::infer::canonical::canonicalizer::Canonicalizer as rustc_type_ir::fold::TypeFolder<rustc_middle::ty::context::TyCtxt>>::fold_ty:???

>     7,072,822  <dyn rustc_hir_analysis::astconv::AstConv>::instantiate_poly_trait_ref_inner:???

>     7,043,488  <rustc_middle::ty::Ty as rustc_type_ir::fold::TypeSuperFoldable<rustc_middle::ty::context::TyCtxt>>::super_fold_with::<rustc_infer::infer::freshen::TypeFreshener>:???

>     6,959,208  <rustc_mir_dataflow::framework::engine::Engine<rustc_mir_dataflow::impls::MaybeUninitializedPlaces>>::iterate_to_fixpoint:???

>    -6,949,569  rustc_mir_dataflow::drop_flag_effects::on_all_children_bits::on_all_children_bits::<rustc_mir_dataflow::drop_flag_effects::drop_flag_effects_for_location<<rustc_mir_dataflow::impls::MaybeUninitializedPlaces as rustc_mir_dataflow::framework::GenKillAnalysis>::statement_effect<rustc_index::bit_set::ChunkedBitSet<rustc_mir_dataflow::move_paths::MovePathIndex>>::{closure#0}>::{closure#0}>:???

>    -6,728,908  <rustc_middle::ty::context::CtxtInterners>::intern_predicate:???

>     6,699,997  <rustc_infer::infer::canonical::canonicalizer::Canonicalizer>::canonicalize::<rustc_middle::infer::canonical::QueryResponse<()>>:???

>     6,614,492  <rustc_middle::ty::adt::AdtDef>::has_dtor:???

>     6,531,339  <rustc_borrowck::type_check::TypeChecker>::normalize_and_prove_instantiated_predicates:???

>     6,509,885  <rustc_mir_dataflow::framework::engine::Engine<rustc_mir_dataflow::impls::MaybeInitializedPlaces>>::iterate_to_fixpoint:???

>     6,486,773  <rustc_middle::middle::region::ScopeTree>::record_scope_parent:???

>     6,482,655  <rustc_mir_build::build::Builder>::test_candidates:???

>    -6,402,647  <rustc_infer::infer::outlives::obligations::TypeOutlives<&mut rustc_borrowck::type_check::constraint_conversion::ConstraintConversion>>::components_must_outlive:???

>    -6,360,200  <dyn rustc_hir_analysis::astconv::AstConv>::associated_path_to_ty::{closure#0}:???

>     6,359,755  <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_call:???

>    -6,352,743  <rustc_middle::ty::ParamEnvAnd<rustc_middle::traits::query::type_op::Normalize<rustc_middle::ty::Predicate>> as rustc_trait_selection::traits::query::type_op::TypeOp>::fully_perform:???

>     6,231,944  <rustc_lint::late::LateContextAndPass<rustc_lint::BuiltinCombinedModuleLateLintPass> as rustc_hir::intravisit::Visitor>::visit_expr:???

>     5,944,134  <rustc_mir_build::build::Builder>::simplify_candidate:???

>     5,886,573  <&rustc_middle::ty::list::List<rustc_middle::ty::subst::GenericArg> as rustc_type_ir::fold::TypeFoldable<rustc_middle::ty::context::TyCtxt>>::try_fold_with::<rustc_infer::infer::resolve::FullTypeResolver>:???

>     5,783,532  <rustc_parse::parser::Parser>::bump:???

>     5,739,978  <rustc_data_structures::obligation_forest::ObligationForest<rustc_trait_selection::traits::fulfill::PendingPredicateObligation>>::process_obligations::<rustc_trait_selection::traits::fulfill::FulfillProcessor>:???

>     5,660,471  <rustc_infer::infer::InferCtxt>::canonicalize_query_keep_static::<rustc_middle::ty::ParamEnvAnd<rustc_middle::traits::query::type_op::Normalize<rustc_middle::ty::Ty>>>:???

>     5,642,474  <rustc_infer::infer::InferCtxtBuilder as rustc_trait_selection::infer::InferCtxtBuilderExt>::enter_canonical_trait_query::<rustc_middle::ty::ParamEnvAnd<rustc_middle::traits::query::type_op::ProvePredicate>, (), rustc_traits::type_op::type_op_prove_predicate::{closure#0}>:???

>     5,537,949  <rustc_trait_selection::traits::select::SelectionContext>::evaluate_candidate:???

>     5,429,281  rustc_middle::ty::relate::structurally_relate_tys::<rustc_infer::infer::nll_relate::TypeRelating<rustc_borrowck::type_check::relate_tys::NllTypeRelatingDelegate>>:???

>     5,375,684  <rustc_ast_lowering::LoweringContext>::lower_node_id:???

>    -5,311,906  <rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::FnSig> as rustc_type_ir::fold::TypeFoldable<rustc_middle::ty::context::TyCtxt>>::fold_with::<rustc_middle::ty::subst::SubstFolder>:???

>     5,259,469  <rustc_middle::ty::subst::GenericArg as rustc_type_ir::fold::TypeFoldable<rustc_middle::ty::context::TyCtxt>>::try_fold_with::<rustc_infer::infer::freshen::TypeFreshener>:???

>     5,258,417  <rustc_hir_analysis::check::region::RegionResolutionVisitor as rustc_hir::intravisit::Visitor>::visit_expr:???

>     5,188,543  <rustc_mir_build::thir::cx::Cx>::mirror_expr:???

>     5,147,977  rustc_middle::ty::util::fold_list::<rustc_middle::ty::subst::SubstFolder, rustc_middle::ty::Ty, <&rustc_middle::ty::list::List<rustc_middle::ty::Ty> as rustc_type_ir::fold::TypeFoldable<rustc_middle::ty::context::TyCtxt>>::try_fold_with<rustc_middle::ty::subst::SubstFolder>::{closure#0}>:???

>     4,967,472  <rustc_hir_typeck::coercion::Coerce>::coerce:???

>    -4,846,111  <alloc::rc::Rc<rustc_middle::traits::ObligationCauseCode> as alloc::rc::RcEqIdent<rustc_middle::traits::ObligationCauseCode>>::eq:???

>     4,820,240  <rustc_middle::ty::fold::RegionFolder as rustc_type_ir::fold::FallibleTypeFolder<rustc_middle::ty::context::TyCtxt>>::try_fold_region:???

>     4,763,502  <rustc_trait_selection::traits::engine::ObligationCtxt>::register_obligation:???

>     4,689,799  <core::result::Result<rustc_middle::ty::subst::GenericArg, rustc_middle::ty::error::TypeError> as rustc_type_ir::CollectAndApply<rustc_middle::ty::subst::GenericArg, &rustc_middle::ty::list::List<rustc_middle::ty::subst::GenericArg>>>::collect_and_apply::<core::iter::adapters::map::Map<core::iter::adapters::zip::Zip<core::iter::adapters::copied::Copied<core::slice::iter::Iter<rustc_middle::ty::subst::GenericArg>>, core::iter::adapters::copied::Copied<core::slice::iter::Iter<rustc_middle::ty::subst::GenericArg>>>, rustc_middle::ty::relate::relate_substs<rustc_infer::infer::generalize::Generalizer<rustc_infer::infer::generalize::CombineDelegate>>::{closure#0}>, <rustc_middle::ty::context::TyCtxt>::mk_substs_from_iter<core::iter::adapters::map::Map<core::iter::adapters::zip::Zip<core::iter::adapters::copied::Copied<core::slice::iter::Iter<rustc_middle::ty::subst::GenericArg>>, core::iter::adapters::copied::Copied<core::slice::iter::Iter<rustc_middle::ty::subst::GenericArg>>>, rustc_middle::ty::relate::relate_substs<rustc_infer::infer::generalize::Generalizer<rustc_infer::infer::generalize::CombineDelegate>>::{closure#0}>, core::result::Result<rustc_middle::ty::subst::GenericArg, rustc_middle::ty::error::TypeError>>::{closure#0}>:???

>     4,633,777  <rustc_borrowck::type_check::TypeVerifier as rustc_middle::mir::visit::Visitor>::visit_body:???

>    -4,455,208  <rustc_infer::infer::InferCtxt>::probe::<core::result::Result<rustc_middle::traits::select::EvaluationResult, rustc_middle::traits::select::OverflowError>, <rustc_trait_selection::traits::select::SelectionContext>::evaluation_probe<<rustc_trait_selection::traits::select::SelectionContext>::evaluate_candidate::{closure#0}::{closure#0}>::{closure#0}>:???

>     4,362,612  <rustc_middle::traits::ObligationCauseCode as core::cmp::PartialEq>::eq:???

>     4,280,756  <rustc_borrowck::type_check::TypeVerifier as rustc_middle::mir::visit::Visitor>::visit_place:???

>     4,259,031  <rustc_mir_build::thir::pattern::check_match::MatchVisitor as rustc_middle::thir::visit::Visitor>::visit_expr:???

>    -4,240,892  <rustc_mir_build::build::Builder>::match_candidates:???

>     4,045,741  <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_match:???

>     4,012,365  <rustc_hir_typeck::coercion::Coerce>::coerce_unsized:???

>     3,927,621  <rustc_hir_typeck::writeback::WritebackCx as rustc_hir::intravisit::Visitor>::visit_pat:???

>     3,768,224  <rustc_borrowck::region_infer::RegionInferenceContext>::new:???

>    -3,536,539  <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_match::{closure#0}:???

>     3,481,528  <rustc_trait_selection::traits::fulfill::FulfillmentContext as rustc_infer::traits::engine::TraitEngine>::select_where_possible:???

>     3,463,316  <rustc_mir_build::build::Builder>::declare_bindings::{closure#0}:???

>    -3,461,431  <rustc_hir_typeck::inherited::Inherited>::register_predicates::<alloc::vec::Vec<rustc_infer::traits::Obligation<rustc_middle::ty::Predicate>>>:???

>     3,461,260  <rustc_hir_typeck::fn_ctxt::FnCtxt>::require_type_is_sized:???

>     3,445,873  <rustc_infer::traits::util::Elaborator<rustc_middle::ty::Predicate> as core::iter::traits::iterator::Iterator>::next:???

>     3,409,674  rustc_hir_analysis::astconv::generics::check_generic_arg_count_for_call:???

>     3,340,577  rustc_middle::ty::relate::relate_substs_with_variances::<rustc_infer::infer::nll_relate::TypeRelating<rustc_borrowck::type_check::relate_tys::NllTypeRelatingDelegate>>:???

>    -3,328,601  <rustc_infer::infer::at::At as rustc_trait_selection::traits::project::NormalizeExt>::normalize::<(rustc_middle::ty::sty::FnSig, rustc_middle::ty::InstantiatedPredicates)>:???

>     3,316,533  <rustc_resolve::late::LateResolutionVisitor>::smart_resolve_path_fragment:???

>     3,271,576  <rustc_infer::infer::InferCtxt>::probe::<rustc_hir_typeck::method::probe::ProbeResult, <rustc_hir_typeck::method::probe::ProbeContext>::consider_probe::{closure#0}>:???

>     3,263,608  <rustc_middle::ty::generics::GenericPredicates>::instantiate_into:???

>     3,251,049  <rustc_infer::infer::at::At>::eq::<rustc_middle::ty::sty::TraitRef>:???

>     3,202,478  rustc_trait_selection::traits::project::normalize_with_depth::<(rustc_middle::ty::sty::FnSig, rustc_middle::ty::InstantiatedPredicates)>:???

>     3,159,709  <rustc_middle::ty::subst::SubstFolder as rustc_type_ir::fold::FallibleTypeFolder<rustc_middle::ty::context::TyCtxt>>::try_fold_ty:???

>     3,088,648  <rustc_infer::infer::InferCtxt>::canonicalize_query_keep_static::<rustc_middle::ty::ParamEnvAnd<rustc_middle::traits::query::type_op::Normalize<rustc_middle::ty::Predicate>>>:???

>    -3,066,812  <rustc_resolve::Resolver>::resolve_ident_in_module_unadjusted_ext:???

>     3,030,020  <rustc_passes::liveness::Liveness>::propagate_through_expr:???

>    -3,027,290  <[rustc_hir::hir::PathSegment] as rustc_data_structures::stable_hasher::HashStable<rustc_query_system::ich::hcx::StableHashingContext>>::hash_stable:???

>    -2,983,740  <rustc_middle::ty::sty::TraitRef>::new::<&rustc_middle::ty::list::List<rustc_middle::ty::subst::GenericArg>>:???

>     2,911,820  rustc_mir_build::thir::pattern::usefulness::is_useful:???

>    -2,909,027  <rustc_mir_build::build::Builder>::expr_into_dest:???

>     2,880,671  <rustc_ast_lowering::index::NodeCollector as rustc_hir::intravisit::Visitor>::visit_expr:???

>     2,833,758  <rustc_infer::infer::freshen::TypeFreshener as rustc_type_ir::fold::FallibleTypeFolder<rustc_middle::ty::context::TyCtxt>>::try_fold_ty:???

>     2,767,946  <rustc_borrowck::used_muts::GatherUsedMutsVisitor as rustc_middle::mir::visit::Visitor>::super_body:???

>     2,741,632  <rustc_trait_selection::traits::engine::ObligationCtxt>::register_obligations::<alloc::vec::Vec<rustc_infer::traits::Obligation<rustc_middle::ty::Predicate>>>:???

>     2,710,599  <rustc_hir_typeck::writeback::WritebackCx>::visit_node_id:???

>    -2,704,028  rustc_trait_selection::traits::project::normalize_with_depth::<rustc_middle::ty::sty::TraitRef>:???

>    -2,694,193  <rustc_middle::ty::context::TyCtxt>::late_bound_vars:???

>     2,664,433  <rustc_infer::infer::InferCtxt>::fudge_inference_if_ok::<core::option::Option<alloc::vec::Vec<rustc_middle::ty::Ty>>, rustc_middle::ty::error::TypeError, <rustc_hir_typeck::fn_ctxt::FnCtxt>::expected_inputs_for_expected_output::{closure#0}>:???

>     2,637,789  rustc_borrowck::places_conflict::borrow_conflicts_with_place:???

>     2,591,324  <rustc_infer::infer::InferCtxt>::resolve_vars_if_possible::<rustc_middle::ty::Ty>:???

>     2,569,502  rustc_trait_selection::traits::wf::obligations:???

>    -2,526,048  <rustc_trait_selection::traits::select::SelectionContext>::match_impl:???

>     2,516,070  <rustc_trait_selection::traits::engine::ObligationCtxt>::normalize::<rustc_middle::ty::InstantiatedPredicates>:???

>     2,507,976  <rustc_infer::infer::outlives::verify::VerifyBoundCx>::param_bound:???

>     2,490,666  <rustc_hir_typeck::fn_ctxt::FnCtxt>::write_method_call:???

>     2,449,629  <rustc_mir_build::build::scope::DropTree>::build_mir::<rustc_mir_build::build::scope::Unwind>:???

>     2,419,584  <rustc_hir::def::Res as rustc_data_structures::stable_hasher::HashStable<rustc_query_system::ich::hcx::StableHashingContext>>::hash_stable:???

>    -2,391,319  <rustc_mir_build::build::Builder>::visit_primary_bindings::<<rustc_mir_build::build::Builder>::declare_bindings::{closure#0}>:???

>     2,374,961  <rustc_middle::ty::ParamEnvAnd<rustc_middle::traits::query::type_op::ProvePredicate> as rustc_trait_selection::traits::query::type_op::TypeOp>::fully_perform:???

>     2,373,613  <rustc_infer::infer::at::At as rustc_trait_selection::traits::project::NormalizeExt>::normalize::<&rustc_middle::ty::list::List<rustc_middle::ty::subst::GenericArg>>:???

>     2,356,943  rustc_borrowck::nll::compute_regions:???

>     2,343,621  <rustc_borrowck::type_check::TypeVerifier as rustc_middle::mir::visit::Visitor>::visit_operand:???

>     2,339,307  <rustc_infer::infer::InferCtxt>::commit_if_ok::<rustc_infer::infer::InferOk<(alloc::vec::Vec<rustc_middle::ty::adjustment::Adjustment>, rustc_middle::ty::Ty)>, rustc_middle::ty::error::TypeError, <rustc_hir_typeck::coercion::Coerce>::coerce::{closure#1}>:???

>     2,338,850  <rustc_mir_build::thir::cx::Cx>::make_mirror_unadjusted::{closure#0}:???

>     2,308,128  <rustc_hir_typeck::fn_ctxt::FnCtxt>::normalize::<rustc_middle::ty::Ty>:???

>     2,292,833  <rustc_infer::infer::InferCtxt>::probe::<bool, <rustc_trait_selection::traits::select::SelectionContext>::match_projection_obligation_against_definition_bounds::{closure#0}::{closure#0}::{closure#0}>:???

>     2,269,215  <rustc_middle::ty::subst::GenericArg as rustc_type_ir::fold::TypeFoldable<rustc_middle::ty::context::TyCtxt>>::try_fold_with::<rustc_middle::ty::subst::SubstFolder>:???

>     2,243,378  <rustc_data_structures::obligation_forest::ObligationForest<rustc_trait_selection::traits::fulfill::PendingPredicateObligation>>::compress::<<rustc_data_structures::obligation_forest::ObligationForest<rustc_trait_selection::traits::fulfill::PendingPredicateObligation>>::process_obligations<rustc_trait_selection::traits::fulfill::FulfillProcessor>::{closure#1}>:???

>     2,226,149  <rustc_hir_typeck::fn_ctxt::FnCtxt>::check_expr_path:???

>     2,210,508  <&mut <rustc_ast_lowering::LoweringContext>::lower_angle_bracketed_parameter_data::{closure#1} as core::ops::function::FnMut<(&rustc_ast::ast::AngleBracketedArg,)>>::call_mut:???

>     2,170,661  <rustc_ast_lowering::index::NodeCollector as rustc_hir::intravisit::Visitor>::visit_ty:???

>    -2,151,700  <rustc_parse::parser::Parser>::break_and_eat:???

>     2,151,087  rustc_trait_selection::traits::project::normalize_with_depth::<rustc_middle::ty::Predicate>:???

>    -2,124,990  rustc_hir_analysis::check::wfcheck::check_where_clauses:???

>     2,122,024  <rustc_borrowck::region_infer::RegionInferenceContext>::solve:???

>     2,118,299  <rustc_infer::infer::InferCtxtBuilder as rustc_trait_selection::infer::InferCtxtBuilderExt>::enter_canonical_trait_query::<rustc_middle::ty::ParamEnvAnd<rustc_middle::ty::Ty>, rustc_middle::traits::query::DropckOutlivesResult, rustc_traits::dropck_outlives::dropck_outlives::{closure#0}>:???

>     2,105,352  <rustc_mir_build::build::CFG>::terminate:???

>    -2,087,481  <rustc_mir_build::build::Builder>::expr_as_place:???

>    -2,040,229  <rustc_ast_lowering::LoweringContext>::lower_generic_param:???

>     2,031,224  <rustc_infer::infer::resolve::FullTypeResolver as rustc_type_ir::fold::FallibleTypeFolder<rustc_middle::ty::context::TyCtxt>>::try_fold_ty:???

>     2,010,479  <rustc_hir_typeck::fn_ctxt::FnCtxt>::try_coerce:???

>     1,997,305  <&rustc_middle::ty::list::List<rustc_middle::ty::subst::GenericArg> as rustc_middle::ty::visit::TypeVisitableExt>::has_type_flags:???

>     1,995,512  <rustc_parse::parser::Parser>::eat_lt:???

>     1,986,305  rustc_middle::ty::relate::structurally_relate_tys::<rustc_infer::infer::sub::Sub>:???

>     1,963,008  <rustc_mir_dataflow::move_paths::builder::Gatherer>::gather_init:???

--------------------------------------------------------------------------------
-- Annotated source file: ./string/../sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S
--------------------------------------------------------------------------------
Unannotated because one or more of these original files are unreadable:
- ./string/../sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S

--------------------------------------------------------------------------------
-- Annotation summary
--------------------------------------------------------------------------------
Ir___________ 

            0    annotated: files known & above threshold & readable, line numbers known
            0    annotated: files known & above threshold & readable, line numbers unknown
            0  unannotated: files known & above threshold & two or more non-identical
    9,546,647  unannotated: files known & above threshold & unreadable 
    2,379,328  unannotated: files known & below threshold
1,900,649,304  unannotated: files unknown

@jyn514
Copy link
Member Author

jyn514 commented Jun 2, 2023

I'm going to close this for now - don't have ideas on how to speed it up further and 3% seems too heavy to land unfortunately.

@jyn514 jyn514 closed this Jun 2, 2023
@jyn514 jyn514 deleted the debug-logging branch June 2, 2023 04:56
GuillaumeGomez added a commit to GuillaumeGomez/rust that referenced this pull request Jun 21, 2023
Make queries traceable again

This can't be tested without something along the lines of rust-lang#111924 unfortunately.

We could benchmark turning query tracing into an `info` level tracing statement, but let's get this fix landed first so we can actually debug properly again
GuillaumeGomez added a commit to GuillaumeGomez/rust that referenced this pull request Jun 21, 2023
Make queries traceable again

This can't be tested without something along the lines of rust-lang#111924 unfortunately.

We could benchmark turning query tracing into an `info` level tracing statement, but let's get this fix landed first so we can actually debug properly again
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-query-system Area: The rustc query system (https://rustc-dev-guide.rust-lang.org/query.html) perf-regression Performance regression. S-experimental Status: Ongoing experiment that does not require reviewing and won't be merged in its current state. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants