Skip to content

Split dead store elimination off dest prop - #97158

Merged
bors merged 3 commits into
rust-lang:masterfrom
JakobDegen:dse
May 28, 2022
Merged

Split dead store elimination off dest prop#97158
bors merged 3 commits into
rust-lang:masterfrom
JakobDegen:dse

Conversation

@JakobDegen

Copy link
Copy Markdown
Contributor

This splits off a part of #96451 . I've added this in as its own pass for now, so that it actually runs, can be tested, etc. In the dest prop PR, I'll stop invoking this as its own pass, so that it doesn't get invoked twice.

r? @tmiasko

@rustbotrustbot added the T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. label May 18, 2022
@rust-highfiverust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label May 18, 2022
Comment threadcompiler/rustc_mir_dataflow/src/impls/liveness.rs Outdated
Comment threadcompiler/rustc_mir_dataflow/src/impls/liveness.rs Outdated
Comment threadcompiler/rustc_mir_dataflow/src/impls/liveness.rs Outdated
Comment threadcompiler/rustc_mir_transform/src/dead_store_elimination.rs Outdated
Comment threadcompiler/rustc_mir_dataflow/src/impls/liveness.rs Outdated
Comment threadcompiler/rustc_mir_transform/src/dead_store_elimination.rs Outdated
Comment threadsrc/test/mir-opt/simplify_try.try_identity.SimplifyLocals.after.mir Outdated
@tmiasko

Copy link
Copy Markdown
Contributor

@bors try @rust-timer queue

@rust-timer

Copy link
Copy Markdown
Collaborator

Awaiting bors try build completion.

@rustbot label: +S-waiting-on-perf

@rustbotrustbot added the S-waiting-on-perf Status: Waiting on a perf run to be completed. label May 19, 2022
@bors

bors commented May 19, 2022

Copy link
Copy Markdown
Collaborator

⌛ Trying commit e54b7e0a6573ca8eb8a308363449835b27647cbd with merge edc0389da8df533107b33d6dba3ef7021209ede0...

@bors

bors commented May 19, 2022

Copy link
Copy Markdown
Collaborator

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

@rust-timer

Copy link
Copy Markdown
Collaborator

Queued edc0389da8df533107b33d6dba3ef7021209ede0 with parent 67a9bcb, future comparison URL.

@rust-timer

Copy link
Copy Markdown
Collaborator

Finished benchmarking commit (edc0389da8df533107b33d6dba3ef7021209ede0): comparison url.

Instruction count

  • Primary benchmarks: mixed results
  • Secondary benchmarks: mixed results
Regressions 😿
(primary)
Regressions 😿
(secondary)
Improvements 🎉
(primary)
Improvements 🎉
(secondary)
All 😿 🎉
(primary)
count11210361648
mean20.4%0.5%-0.5%-0.7%-0.3%
max0.7%2.1%-1.8%-1.8%-1.8%

Max RSS (memory usage)

Results
  • Primary benchmarks: 🎉 relevant improvements found
  • Secondary benchmarks: mixed results
Regressions 😿
(primary)
Regressions 😿
(secondary)
Improvements 🎉
(primary)
Improvements 🎉
(secondary)
All 😿 🎉
(primary)
count10210710
mean2N/A46.2%-2.9%-1.9%-2.9%
maxN/A49.5%-7.8%-3.3%-7.8%

Cycles

Results
  • Primary benchmarks: mixed results
  • Secondary benchmarks: 🎉 relevant improvement found
Regressions 😿
(primary)
Regressions 😿
(secondary)
Improvements 🎉
(primary)
Improvements 🎉
(secondary)
All 😿 🎉
(primary)
count110213
mean21.9%N/A-2.3%-2.1%-0.9%
max1.9%N/A-3.4%-2.1%-3.4%

If you disagree with this performance assessment, please file an issue in rust-lang/rustc-perf.

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-review -S-waiting-on-perf +perf-regression

Footnotes

  1. number of relevant changes23

  2. the arithmetic mean of the percent change23

@rustbotrustbot added perf-regression Performance regression. and removed S-waiting-on-perf Status: Waiting on a perf run to be completed. labels May 19, 2022
@tmiaskotmiasko added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels May 19, 2022
Comment threadcompiler/rustc_mir_dataflow/src/impls/liveness.rs Outdated
Comment threadcompiler/rustc_mir_transform/src/dead_store_elimination.rs Outdated
@JakobDegen

Copy link
Copy Markdown
ContributorAuthor

The update should address all the outstanding review comments. I've also added in a check that ensure we don't optimize out ptr2int casts. Once CI passes, I'll restart perf as well

@JakobDegen

Copy link
Copy Markdown
ContributorAuthor

@bors try @rust-timer queue

@rustbot ready

Oh also, I still need to add some actual tests. Kind of forgot to do that because of all the existing MIR opt tests this affects

@rust-timer

Copy link
Copy Markdown
Collaborator

Awaiting bors try build completion.

@rustbot label: +S-waiting-on-perf

@rustbotrustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. S-waiting-on-perf Status: Waiting on a perf run to be completed. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels May 21, 2022
@bors

bors commented May 21, 2022

Copy link
Copy Markdown
Collaborator

⌛ Trying commit e17fcacd7035e80d6ceab06aee48da58a675c9e1 with merge ee288a61fe1e3c195eeadd3527ccf09eddf63506...

@bors

bors commented May 21, 2022

Copy link
Copy Markdown
Collaborator

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

@rust-timer

Copy link
Copy Markdown
Collaborator

Queued ee288a61fe1e3c195eeadd3527ccf09eddf63506 with parent e6a4afc, future comparison URL.

@JakobDegen

Copy link
Copy Markdown
ContributorAuthor

Interesting. The test failed because bors turns off optimizations for tests. I've asked T-Infra on Zulip, also cc @cjgillot who answered questions about these tests last time I had one and may want to weigh in

@cjgillot

Copy link
Copy Markdown
Contributor

The simplest way would be to force either optimization or no-optimization on those tests.

@JakobDegen

Copy link
Copy Markdown
ContributorAuthor

For all incremental tests or just for those?

@cjgillot

Copy link
Copy Markdown
Contributor

All those in the hashes directory. Could you add make them optimized -O by default?
The no-optimization case can be tested by annotating for mir_for_ctfe (no need to do it in this PR, I'll file an issue).

@JakobDegen

Copy link
Copy Markdown
ContributorAuthor

@cjgillot done. There were two files (enum_constructors.rs and closure_expressions.rs) that were using -Zmir-opt-level=0 for presumably the same reason as I was considering it. I've also switched these, and removed the optimized_mir annotations as appropriate

@cjgillot

Copy link
Copy Markdown
Contributor

@bors r=tmiasko,cjgillot

@bors

bors commented May 28, 2022

Copy link
Copy Markdown
Collaborator

📌 Commit 7a99da1 has been approved by tmiasko,cjgillot

@borsbors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels May 28, 2022
@bors

bors commented May 28, 2022

Copy link
Copy Markdown
Collaborator

⌛ Testing commit 7a99da1 with merge 6831417...

@bors

bors commented May 28, 2022

Copy link
Copy Markdown
Collaborator

☀️ Test successful - checks-actions
Approved by: tmiasko,cjgillot
Pushing 6831417 to master...

@borsbors added the merged-by-bors This PR was explicitly merged by bors. label May 28, 2022
@bors
bors merged commit 6831417 into rust-lang:masterMay 28, 2022
@rustbotrustbot added this to the 1.63.0 milestone May 28, 2022
@rust-highfive

Copy link
Copy Markdown
Contributor

📣 Toolstate changed by #97158!

Tested on commit 6831417.
Direct link to PR: #97158

💔 miri on windows: test-pass → test-fail (cc @oli-obk@eddyb@RalfJung).
💔 miri on linux: test-pass → test-fail (cc @oli-obk@eddyb@RalfJung).

rust-highfive added a commit to rust-lang-nursery/rust-toolstate that referenced this pull request May 28, 2022
Tested on commit rust-lang/rust@6831417.
Direct link to PR: <rust-lang/rust#97158>
💔 miri on windows: test-pass → test-fail (cc @oli-obk@eddyb@RalfJung).
💔 miri on linux: test-pass → test-fail (cc @oli-obk@eddyb@RalfJung).
@rust-timer

Copy link
Copy Markdown
Collaborator

Finished benchmarking commit (6831417): comparison url.

Instruction count

  • Primary benchmarks: mixed results
  • Secondary benchmarks: mixed results
mean1maxcount2
Regressions 😿
(primary)
0.5%1.3%15
Regressions 😿
(secondary)
0.6%2.3%12
Improvements 🎉
(primary)
-0.4%-1.9%50
Improvements 🎉
(secondary)
-0.6%-1.3%33
All 😿🎉 (primary)-0.2%-1.9%65

Max RSS (memory usage)

Results
  • Primary benchmarks: 🎉 relevant improvements found
  • Secondary benchmarks: mixed results
mean1maxcount2
Regressions 😿
(primary)
N/AN/A0
Regressions 😿
(secondary)
2.4%2.4%1
Improvements 🎉
(primary)
-2.0%-7.3%6
Improvements 🎉
(secondary)
-1.8%-2.2%4
All 😿🎉 (primary)-2.0%-7.3%6

Cycles

Results
  • Primary benchmarks: 🎉 relevant improvements found
  • Secondary benchmarks: no relevant changes found
mean1maxcount2
Regressions 😿
(primary)
N/AN/A0
Regressions 😿
(secondary)
N/AN/A0
Improvements 🎉
(primary)
-2.2%-2.4%2
Improvements 🎉
(secondary)
N/AN/A0
All 😿🎉 (primary)-2.2%-2.4%2

If you disagree with this performance assessment, please file an issue in rust-lang/rustc-perf.

Next Steps: If you can justify the regressions found in this perf run, please indicate this with @rustbot label: +perf-regression-triaged along with sufficient written justification. If you cannot justify the regressions please open an issue or create a new PR that fixes the regressions, add a comment linking to the newly created issue or PR, and then add the perf-regression-triaged label to this PR.

@rustbot label: +perf-regression

Footnotes

  1. the arithmetic mean of the percent change23

  2. number of relevant changes23

@RalfJungRalfJung mentioned this pull request May 28, 2022
@JakobDegen

Copy link
Copy Markdown
ContributorAuthor

For perf triage:

In non-opt builds, things generally improved which means we are optimizing quite some things that LLVM doesn't catch. The only regressions are in bitmaps and some wg-grammar stuff. I checked with cachegrind, it points to try_mark_previous_green in DepGraph as being a possible culprit, but I have no idea why. Possibly LLVM noise?

For opt builds, some things slowed down. This is to be expected to some extent, since rustc is optimizing things it wasn't before and so doing more work. I ran cachegrind on a couple of the slower benchmarks and nothing stood out to me. The serde full one is reproduced below if anyone else wants to take a look. Likely the only way to improve upon the regressions is to make this pass faster. That is certainly desirable, but I don't know of any low hanging fruit there.

Serde Full Cachegrind
-71,093,539 ???:<rustc_mir_dataflow::move_paths::MoveData>::gather_moves
70,396,361 ???:rustc_mir_dataflow::move_paths::builder::gather_moves
25,079,029 ???:rustc_infer::infer::lexical_region_resolve::resolve
-24,646,889 ???:<rustc_infer::infer::lexical_region_resolve::LexicalResolver>::infer_variable_values
16,357,213 ???:<rustc_mir_transform::dead_store_elimination::DeadStoreElimination as rustc_middle::mir::MirPass>::run_pass
13,473,813 ???:<rustc_mir_dataflow::impls::liveness::MaybeTransitiveLiveLocals as rustc_mir_dataflow::framework::Analysis>::apply_statement_effect
13,388,107 ???:<rustc_mir_dataflow::framework::direction::Backward as rustc_mir_dataflow::framework::direction::Direction>::join_state_into_successors_of::<rustc_mir_dataflow::impls::liveness::MaybeTransitiveLiveLocals, <rustc_mir_dataflow::framework::engine::Engine<rustc_mir_dataflow::impls::liveness::MaybeTransitiveLiveLocals>>::iterate_to_fixpoint::{closure#0}>
-10,671,487 ???:<&rustc_middle::ty::list::List<rustc_middle::ty::Predicate> as rustc_middle::ty::fold::TypeFoldable>::try_fold_with::<rustc_middle::ty::fold::BoundVarReplacer>
10,671,487 ???:rustc_middle::ty::util::fold_list::<rustc_middle::ty::fold::BoundVarReplacer, rustc_middle::ty::Predicate, <&rustc_middle::ty::list::List<rustc_middle::ty::Predicate> as rustc_middle::ty::fold::TypeFoldable>::try_super_fold_with<rustc_middle::ty::fold::BoundVarReplacer>::{closure#0}>
-9,923,870 ???:<rustc_mir_dataflow::framework::engine::Engine<rustc_mir_dataflow::impls::MaybeInitializedPlaces>>::new_gen_kill
9,910,702 ???:<rustc_mir_dataflow::impls::MaybeInitializedPlaces as rustc_mir_dataflow::framework::Analysis>::into_engine
9,348,728 ???:<rustc_mir_dataflow::framework::engine::Engine<rustc_mir_dataflow::impls::liveness::MaybeTransitiveLiveLocals>>::iterate_to_fixpoint
-8,528,264 ???:llvm::AnalysisUsage::setPreservesCFG()
8,526,920 ???:llvm::PassRegistry::enumerateWith(llvm::PassRegistrationListener*)
7,329,210 ???:<rustc_mir_transform::simplify::CfgSimplifier>::simplify
7,168,966 ???:<rustc_data_structures::obligation_forest::ObligationForest<rustc_trait_selection::traits::fulfill::PendingPredicateObligation>>::process_obligations::<rustc_trait_selection::traits::fulfill::FulfillProcessor, rustc_data_structures::obligation_forest::Outcome<rustc_trait_selection::traits::fulfill::PendingPredicateObligation, rustc_infer::traits::FulfillmentErrorCode>>
-6,921,105 ???:<&rustc_middle::ty::list::List<rustc_middle::ty::subst::GenericArg> as rustc_middle::ty::fold::TypeFoldable>::try_fold_with::<rustc_middle::ty::fold::BoundVarReplacer>
6,325,596 ???:<rustc_middle::mir::traversal::Postorder as core::iter::traits::iterator::Iterator>::next
6,228,009 ???:???
5,789,048 ???:<rustc_middle::ty::subst::SubstFolder as rustc_middle::ty::fold::FallibleTypeFolder>::try_fold_ty
-5,724,272 ???:<rustc_infer::infer::sub::Sub as rustc_middle::ty::relate::TypeRelation>::relate::<rustc_middle::ty::Ty>
5,525,146 ???:<rustc_middle::mir::traversal::Preorder as core::iter::traits::iterator::Iterator>::next
-5,429,505 ???:<rustc_infer::infer::combine::CombineFields>::instantiate
4,792,974 ???:<rustc_middle::ty::Ty as rustc_middle::ty::fold::TypeFoldable>::super_fold_with::<rustc_middle::ty::fold::BoundVarReplacer>
4,763,518 ???:rustc_middle::ty::util::fold_list::<rustc_infer::infer::canonical::canonicalizer::Canonicalizer, rustc_middle::ty::Predicate, <&rustc_middle::ty::list::List<rustc_middle::ty::Predicate> as rustc_middle::ty::fold::TypeFoldable>::try_super_fold_with<rustc_infer::infer::canonical::canonicalizer::Canonicalizer>::{closure#0}>
4,711,782 ???:<rustc_mir_dataflow::impls::MaybeUninitializedPlaces as rustc_mir_dataflow::framework::Analysis>::into_engine
-4,708,278 ???:<rustc_mir_dataflow::framework::engine::Engine<rustc_mir_dataflow::impls::MaybeUninitializedPlaces>>::new_gen_kill
4,523,699 ???:<rustc_infer::infer::sub::Sub as rustc_middle::ty::relate::TypeRelation>::relate_with_variance::<rustc_middle::ty::subst::GenericArg>
-4,374,137 ???:<rustc_middle::ty::Ty as rustc_middle::ty::fold::TypeFoldable>::super_fold_with::<rustc_middle::ty::subst::SubstFolder>
-4,317,895 ???:<rustc_infer::infer::InferCtxt>::resolve_regions_and_report_errors
-4,142,844 ???:llvm::SimplifyCFGPass::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&)
3,927,924 ???:simplifyFunctionCFG(llvm::Function&, llvm::TargetTransformInfo const&, llvm::DominatorTree*, llvm::SimplifyCFGOptions const&) [clone 3,894,729 ???:<rustc_infer::infer::equate::Equate as rustc_middle::ty::relate::TypeRelation>::tys
3,590,876 ???:<rustc_mir_dataflow::impls::liveness::MaybeTransitiveLiveLocals as rustc_mir_dataflow::framework::Analysis>::apply_terminator_effect
-3,568,431 ???:<alloc::rc::Rc<rustc_middle::traits::ObligationCauseCode> as core::ops::drop::Drop>::drop
3,451,985 ???:<rustc_index::bit_set::ChunkedBitSet<rustc_mir_dataflow::move_paths::InitIndex>>::insert
3,261,273 ???:<rustc_mir_transform::simplify::SimplifyCfg as rustc_middle::mir::MirPass>::run_pass
3,231,830 ???:<rustc_middle::mir::tcx::PlaceTy>::projection_ty
3,144,036 ???:<rustc_middle::ty::Ty as rustc_middle::ty::fold::TypeFoldable>::try_fold_with::<rustc_middle::ty::subst::SubstFolder>
-3,094,406 ???:<rustc_middle::ty::subst::SubstFolder as rustc_middle::ty::fold::TypeFolder>::fold_ty
3,071,092 ???:<rustc_infer::infer::equate::Equate as rustc_middle::ty::relate::TypeRelation>::relate::<rustc_middle::ty::Ty>
2,791,368 ???:<alloc::vec::Vec<rustc_index::bit_set::ChunkedBitSet<rustc_middle::mir::Local>>>::extend_with::<alloc::vec::ExtendElement<rustc_index::bit_set::ChunkedBitSet<rustc_middle::mir::Local>>>
2,756,022 ???:<rustc_middle::ty::subst::GenericArg as rustc_middle::ty::fold::TypeFoldable>::try_fold_with::<rustc_middle::ty::fold::BoundVarReplacer>
2,740,564 ???:<alloc::vec::Vec<rustc_middle::ty::Predicate> as alloc::vec::spec_extend::SpecExtend<rustc_middle::ty::Predicate, core::iter::adapters::map::Map<core::slice::iter::Iter<(rustc_middle::ty::Predicate, rustc_span::span_encoding::Span)>, <rustc_middle::ty::generics::GenericPredicates>::instantiate_into::{closure#0}>>>::spec_extend
-2,687,017 ???:<core::result::Result<rustc_middle::ty::subst::GenericArg, rustc_middle::ty::error::TypeError> as rustc_middle::ty::context::InternIteratorElement<rustc_middle::ty::subst::GenericArg, &rustc_middle::ty::list::List<rustc_middle::ty::subst::GenericArg>>>::intern_with::<core::iter::adapters::map::Map<core::iter::adapters::enumerate::Enumerate<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_with_variances<rustc_infer::infer::sub::Sub>::{closure#0}>, <rustc_middle::ty::context::TyCtxt>::mk_substs<core::iter::adapters::map::Map<core::iter::adapters::enumerate::Enumerate<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_with_variances<rustc_infer::infer::sub::Sub>::{closure#0}>>::{closure#0}>
-2,641,044 ???:rustc_mir_transform::simplify::simplify_locals
2,499,888 ???:<rustc_middle::mir::Place>::is_indirect
2,423,997 ???:<rustc_index::bit_set::ChunkedBitSet<rustc_middle::mir::Local> as rustc_mir_dataflow::framework::lattice::JoinSemiLattice>::join
2,189,288 ???:<alloc::vec::Vec<(rustc_middle::ty::sty::RegionVid, rustc_middle::ty::sty::RegionVid)>>::retain::<<rustc_infer::infer::lexical_region_resolve::LexicalResolver>::expansion::{closure#0}>
2,156,020 obj/build/x86_64-unknown-linux-gnu/stage1-rustc/x86_64-unknown-linux-gnu/release/build/jemalloc-sys-8de766d3318ac835/out/build/src/arena.c:_rjem_je_arena_cache_bin_fill_small
2,104,508 ???:rustc_middle::ty::util::fold_list::<rustc_middle::ty::subst::SubstFolder, rustc_middle::ty::subst::GenericArg, <&rustc_middle::ty::list::List<rustc_middle::ty::subst::GenericArg> as rustc_middle::ty::fold::TypeFoldable>::try_super_fold_with<rustc_middle::ty::subst::SubstFolder>::{closure#0}>
-1,961,292 ???:<&rustc_middle::ty::list::List<rustc_middle::ty::subst::GenericArg> as rustc_middle::ty::fold::TypeFoldable>::try_fold_with::<rustc_middle::ty::subst::SubstFolder>
1,900,171 include/jemalloc/internal/rtree.h:free
1,881,739 ???:<rustc_middle::ty::subst::GenericArg as rustc_middle::ty::fold::TypeFoldable>::visit_with::<rustc_privacy::DefIdVisitorSkeleton<rustc_privacy::TypePrivacyVisitor>>
1,741,974 ???:<rustc_infer::infer::canonical::canonicalizer::Canonicalizer as rustc_middle::ty::fold::TypeFolder>::fold_region
1,679,816 ???:core::ptr::drop_in_place::<rustc_middle::traits::ObligationCauseCode>
1,600,900 include/jemalloc/internal/cache_bin.h:free
1,496,993 ???:<rustc_middle::mir::patch::MirPatch>::patch_terminator
1,403,293 include/jemalloc/internal/cache_bin.h:malloc
-1,391,320 ???:rustc_data_structures::stable_hasher::stable_hash_reduce::<rustc_query_system::ich::hcx::StableHashingContext, (&rustc_hir::hir_id::ItemLocalId, &alloc::boxed::Box<[rustc_hir::hir::TraitCandidate]>), std::collections::hash::map::Iter<rustc_hir::hir_id::ItemLocalId, alloc::boxed::Box<[rustc_hir::hir::TraitCandidate]>>, <std::collections::hash::map::HashMap<rustc_hir::hir_id::ItemLocalId, alloc::boxed::Box<[rustc_hir::hir::TraitCandidate]>, core::hash::BuildHasherDefault<rustc_hash::FxHasher>> as rustc_data_structures::stable_hasher::HashStable<rustc_query_system::ich::hcx::StableHashingContext>>::hash_stable::{closure#0}>
1,378,935 ???:<rustc_span::symbol::Ident as rustc_serialize::serialize::Encodable<rustc_metadata::rmeta::encoder::EncodeContext>>::encode
1,365,932 ???:rustc_data_structures::graph::dominators::dominators::<&rustc_middle::mir::Body>
-1,263,548 ???:<rustc_infer::infer::combine::Generalizer as rustc_middle::ty::relate::TypeRelation>::tys
1,194,180 ???:<rustc_middle::ty::fold::BoundVarReplacer as rustc_middle::ty::fold::FallibleTypeFolder>::try_fold_ty
-1,173,404 ???:<rustc_span::span_encoding::Span as rustc_serialize::serialize::Encodable<rustc_metadata::rmeta::encoder::EncodeContext>>::encode
1,168,441 obj/build/x86_64-unknown-linux-gnu/stage1-rustc/x86_64-unknown-linux-gnu/release/build/jemalloc-sys-8de766d3318ac835/out/build/src/jemalloc.c:free
1,162,380 ???:<core::iter::adapters::map::Map<std::collections::hash::map::Iter<rustc_hir::hir_id::ItemLocalId, alloc::boxed::Box<[rustc_hir::hir::TraitCandidate]>>, rustc_data_structures::stable_hasher::stable_hash_reduce<rustc_query_system::ich::hcx::StableHashingContext, (&rustc_hir::hir_id::ItemLocalId, &alloc::boxed::Box<[rustc_hir::hir::TraitCandidate]>), std::collections::hash::map::Iter<rustc_hir::hir_id::ItemLocalId, alloc::boxed::Box<[rustc_hir::hir::TraitCandidate]>>, <std::collections::hash::map::HashMap<rustc_hir::hir_id::ItemLocalId, alloc::boxed::Box<[rustc_hir::hir::TraitCandidate]>, core::hash::BuildHasherDefault<rustc_hash::FxHasher>> as rustc_data_structures::stable_hasher::HashStable<rustc_query_system::ich::hcx::StableHashingContext>>::hash_stable::{closure#0}>::{closure#0}> as core::iter::traits::iterator::Iterator>::fold::<u128, rustc_data_structures::stable_hasher::stable_hash_reduce<rustc_query_system::ich::hcx::StableHashingContext, (&rustc_hir::hir_id::ItemLocalId, &alloc::boxed::Box<[rustc_hir::hir::TraitCandidate]>), std::collections::hash::map::Iter<rustc_hir::hir_id::ItemLocalId, alloc::boxed::Box<[rustc_hir::hir::TraitCandidate]>>, <std::collections::hash::map::HashMap<rustc_hir::hir_id::ItemLocalId, alloc::boxed::Box<[rustc_hir::hir::TraitCandidate]>, core::hash::BuildHasherDefault<rustc_hash::FxHasher>> as rustc_data_structures::stable_hasher::HashStable<rustc_query_system::ich::hcx::StableHashingContext>>::hash_stable::{closure#0}>::{closure#1}>
1,077,379 ???:<rustc_borrowck::type_check::TypeChecker>::typeck_mir
-1,075,995 ???:<rustc_middle::ty::subst::GenericArg as rustc_middle::ty::relate::Relate>::relate::<rustc_infer::infer::equate::Equate>
1,075,410 ???:<&mut rustc_middle::ty::relate::relate_substs_with_variances<rustc_infer::infer::sub::Sub>::{closure#0} as core::ops::function::FnOnce<((usize, (rustc_middle::ty::subst::GenericArg, rustc_middle::ty::subst::GenericArg)),)>>::call_once
-1,069,603 ???:<rustc_middle::ty::adt::AdtDef>::has_dtor
1,064,806 ???:<rustc_middle::mir::terminator::Terminator>::successors_mut
-1,043,182 ???:llvm::buildModuleSummaryIndex(llvm::Module const&, std::function<llvm::BlockFrequencyInfo* (llvm::Function const&)>, llvm::ProfileSummaryInfo*, std::function<llvm::StackSafetyInfo const* (llvm::Function const&)>)
1,019,174 ???:<rustc_borrowck::type_check::TypeVerifier as rustc_middle::mir::visit::Visitor>::visit_body
1,006,824 include/jemalloc/internal/jemalloc_internal_inlines_c.h:malloc
1,001,664 ???:pthread_mutex_trylock
928,944 ???:<rustc_middle::mir::terminator::Terminator>::successors
893,268 ???:<rustc_infer::infer::sub::Sub as rustc_middle::ty::relate::TypeRelation>::relate_item_substs
881,419 library/std/src/sys/unix/alloc.rs:__rdl_alloc
873,952 ???:<core::iter::adapters::map::Map<std::collections::hash::map::Iter<rustc_span::def_id::LocalDefId, rustc_hir::hir_id::ItemLocalId>, rustc_data_structures::stable_hasher::stable_hash_reduce<rustc_query_system::ich::hcx::StableHashingContext, (&rustc_span::def_id::LocalDefId, &rustc_hir::hir_id::ItemLocalId), std::collections::hash::map::Iter<rustc_span::def_id::LocalDefId, rustc_hir::hir_id::ItemLocalId>, <std::collections::hash::map::HashMap<rustc_span::def_id::LocalDefId, rustc_hir::hir_id::ItemLocalId, core::hash::BuildHasherDefault<rustc_hash::FxHasher>> as rustc_data_structures::stable_hasher::HashStable<rustc_query_system::ich::hcx::StableHashingContext>>::hash_stable::{closure#0}>::{closure#0}> as core::iter::traits::iterator::Iterator>::fold::<u128, rustc_data_structures::stable_hasher::stable_hash_reduce<rustc_query_system::ich::hcx::StableHashingContext, (&rustc_span::def_id::LocalDefId, &rustc_hir::hir_id::ItemLocalId), std::collections::hash::map::Iter<rustc_span::def_id::LocalDefId, rustc_hir::hir_id::ItemLocalId>, <std::collections::hash::map::HashMap<rustc_span::def_id::LocalDefId, rustc_hir::hir_id::ItemLocalId, core::hash::BuildHasherDefault<rustc_hash::FxHasher>> as rustc_data_structures::stable_hasher::HashStable<rustc_query_system::ich::hcx::StableHashingContext>>::hash_stable::{closure#0}>::{closure#1}>
835,813 ???:<rustc_data_structures::graph::implementation::Graph<(), rustc_infer::infer::region_constraints::Constraint>>::add_edge
-796,440 ???:llvm::AnalysisManager<llvm::Function>::invalidate(llvm::Function&, llvm::PreservedAnalyses const&)
-791,572 ???:<[(rustc_span::def_id::DefPathHash, &rustc_hir::hir::OwnerInfo)] as rustc_data_structures::stable_hasher::HashStable<rustc_query_system::ich::hcx::StableHashingContext>>::hash_stable
774,203 ???:<rustc_index::bit_set::ChunkedBitSet<rustc_middle::mir::Local>>::remove
-762,388 ???:<rustc_middle::ty::Ty>::fn_sig
755,185 ???:llvm::FPPassManager::runOnFunction(llvm::Function&)
-732,841 ???:<rustc_middle::ty::Predicate>::subst_supertrait
713,622 ???:rustc_middle::mir::traversal::postorder
704,365 ???:<rustc_infer::infer::free_regions::FreeRegionMap>::sub_free_regions
697,578 obj/build/x86_64-unknown-linux-gnu/stage1-rustc/x86_64-unknown-linux-gnu/release/build/jemalloc-sys-8de766d3318ac835/out/build/src/jemalloc.c:calloc
692,265 include/jemalloc/internal/rtree.h:_rjem_je_tcache_bin_flush_small
691,850 library/core/src/slice/iter/macros.rs:core::slice::memchr::memrchr
-691,173 ???:<rustc_infer::infer::InferCtxt>::commit_if_ok::<rustc_infer::infer::InferOk<rustc_middle::ty::Ty>, rustc_middle::ty::error::TypeError, <rustc_typeck::check::coercion::Coerce>::unify::{closure#0}>
686,361 obj/build/x86_64-unknown-linux-gnu/stage1-rustc/x86_64-unknown-linux-gnu/release/build/jemalloc-sys-8de766d3318ac835/out/build/src/tcache.c:_rjem_je_tcache_bin_flush_small
-675,345 ???:<arrayvec::arrayvec::ArrayVec<(rustc_middle::ty::Ty, core::result::Result<rustc_middle::ty::Ty, rustc_middle::ty::error::TypeError>), 8>>::as_mut_slice
668,814 ???:<rustc_middle::ty::subst::SubstFolder as rustc_middle::ty::fold::FallibleTypeFolder>::try_fold_const
-667,558 ???:<rustc_middle::mir::terminator::Terminator as rustc_serialize::serialize::Encodable<rustc_metadata::rmeta::encoder::EncodeContext>>::encode
654,670 ???:<rustc_mir_transform::simplify_branches::SimplifyConstCondition as rustc_middle::mir::MirPass>::run_pass
644,456 ???:<rustc_infer::infer::canonical::canonicalizer::Canonicalizer as rustc_middle::ty::fold::FallibleTypeFolder>::try_fold_region
642,906 obj/build/x86_64-unknown-linux-gnu/stage1-rustc/x86_64-unknown-linux-gnu/release/build/jemalloc-sys-8de766d3318ac835/out/build/src/emap.c:emap_try_acquire_edata_neighbor_impl
642,637 ???:<rustc_middle::mir::Statement>::make_nop
-633,443 ???:<rustc_mir_transform::nrvo::RenameReturnPlace as rustc_middle::mir::MirPass>::run_pass
627,955 include/jemalloc/internal/sz.h:malloc
-624,925 ???:<rustc_data_structures::graph::scc::SccsConstruction<rustc_borrowck::constraints::graph::RegionGraph<rustc_borrowck::constraints::graph::Normal>, rustc_borrowck::constraints::ConstraintSccIndex>>::start_walk_from
607,912 ???:<rustc_infer::infer::equate::Equate as rustc_middle::ty::relate::TypeRelation>::relate_with_variance::<rustc_middle::ty::subst::GenericArg>
603,516 ???:<rustc_mir_dataflow::impls::liveness::MaybeTransitiveLiveLocals as rustc_mir_dataflow::framework::AnalysisDomain>::bottom_value
-597,293 ???:<rustc_middle::ty::consts::Const as rustc_middle::ty::fold::TypeFoldable>::try_fold_with::<rustc_middle::ty::subst::SubstFolder>
-560,496 ???:<&rustc_middle::ty::list::List<rustc_middle::ty::subst::GenericArg> as rustc_serialize::serialize::Encodable<rustc_metadata::rmeta::encoder::EncodeContext>>::encode
-555,010 ???:<rustc_mir_transform::elaborate_drops::ElaborateDrops as rustc_middle::mir::MirPass>::run_pass
-552,301 ???:rustc_middle::ty::util::fold_list::<rustc_middle::ty::fold::BoundVarReplacer, rustc_middle::ty::Ty, <&rustc_middle::ty::list::List<rustc_middle::ty::Ty> as rustc_middle::ty::fold::TypeFoldable>::try_super_fold_with<rustc_middle::ty::fold::BoundVarReplacer>::{closure#0}>
550,366 ???:<rustc_infer::infer::sub::Sub as rustc_middle::ty::relate::TypeRelation>::tys
-549,436 ???:<rustc_mir_transform::simplify::UsedLocals as rustc_middle::mir::visit::Visitor>::visit_statement
538,791 ???:<rustc_middle::ty::context::TyCtxt>::intern_substs
-514,685 ???:core::ptr::drop_in_place::<rustc_infer::infer::InferCtxtBuilder>
510,141 ???:core::ptr::drop_in_place::<rustc_typeck::check::inherited::InheritedBuilder>
509,163 ???:<rustc_infer::infer::combine::Generalizer as rustc_middle::ty::relate::TypeRelation>::relate_with_variance::<rustc_middle::ty::subst::GenericArg>
504,470 ???:<rustc_typeck::check::coercion::Coerce>::unify_and::<rustc_typeck::check::coercion::identity>
-500,785 ???:core::ptr::drop_in_place::<rustc_middle::mir::StatementKind>
498,998 ???:<rustc_metadata::rmeta::encoder::EncodeContext as rustc_serialize::serialize::Encoder>::emit_enum_variant::<<rustc_middle::ty::subst::GenericArgKind as rustc_serialize::serialize::Encodable<rustc_metadata::rmeta::encoder::EncodeContext>>::encode::{closure#0}::{closure#1}>
491,501 include/jemalloc/internal/tcache_inlines.h:_rjem_je_malloc_default
490,806 ???:<rustc_middle::ty::inhabitedness::def_id_forest::DefIdForest>::intersection::<core::iter::adapters::map::Map<core::slice::iter::Iter<rustc_middle::ty::VariantDef>, <rustc_middle::ty::adt::AdtDef>::uninhabited_from::{closure#0}>>
-490,262 ???:<rustc_middle::ty::context::CtxtInterners>::intern_ty
-485,119 ???:<rustc_middle::ty::adt::AdtDef>::uninhabited_from
478,645 library/core/src/slice/memchr.rs:core::slice::memchr::memrchr
475,049 ???:core::ptr::drop_in_place::<rustc_typeck::check::inherited::Inherited>
472,696 ???: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_middle::ty::fold::TypeFoldable>::try_super_fold_with<rustc_middle::ty::subst::SubstFolder>::{closure#0}>
462,675 ???:<rustc_typeck::check::coercion::CoerceMany<&rustc_hir::hir::Expr>>::coerce_inner
-461,082 ???:<alloc::vec::Vec<u64> as core::ops::deref::Deref>::deref
459,753 ???:<alloc::vec::Vec<u32> as core::ops::deref::Deref>::deref
-456,011 ???:<rustc_mir_dataflow::framework::engine::Engine<rustc_mir_dataflow::impls::storage_liveness::MaybeStorageLive>>::iterate_to_fixpoint
450,761 obj/build/x86_64-unknown-linux-gnu/stage1-rustc/x86_64-unknown-linux-gnu/release/build/jemalloc-sys-8de766d3318ac835/out/build/src/extent.c:extent_try_coalesce_impl
441,990 obj/build/x86_64-unknown-linux-gnu/stage1-rustc/x86_64-unknown-linux-gnu/release/build/jemalloc-sys-8de766d3318ac835/out/build/src/tcache.c:_rjem_je_tcache_bin_flush_stashed
439,358 include/jemalloc/internal/bit_util.h:_rjem_je_arena_cache_bin_fill_small
438,026 include/jemalloc/internal/rtree.h:_rjem_je_emap_update_edata_state
428,214 obj/build/x86_64-unknown-linux-gnu/stage1-rustc/x86_64-unknown-linux-gnu/release/build/jemalloc-sys-8de766d3318ac835/out/build/src/emap.c:_rjem_je_emap_update_edata_state
-409,732 ???:<rustc_middle::ty::context::CtxtInterners>::intern_predicate
408,130 ???:<rustc_parse::parser::Parser>::parse_dot_or_call_expr
-407,888 ???:<rustc_middle::ty::subst::GenericArg as rustc_middle::ty::relate::Relate>::relate::<rustc_infer::infer::combine::Generalizer>
406,832 ???:<rustc_middle::ty::erase_regions::RegionEraserVisitor as rustc_middle::ty::fold::FallibleTypeFolder>::try_fold_binder::<rustc_middle::ty::PredicateKind>
-403,734 ???:<alloc::vec::Vec<bool> as core::ops::deref::Deref>::deref
402,701 ???:<rustc_middle::ty::sty::FnSig as rustc_middle::ty::fold::TypeFoldable>::fold_with::<rustc_middle::ty::fold::BoundVarReplacer>
390,912 ???:<rustc_mir_dataflow::framework::Effect>::at_index
389,880 ???:<rustc_mir_dataflow::framework::EffectIndex>::precedes_in_backward_order
384,823 ???:(anonymous namespace)::LazyValueInfoImpl::getEdgeValue(llvm::Value*, llvm::BasicBlock*, llvm::BasicBlock*, llvm::Instruction*) [clone 372,754 ???:<rustc_infer::infer::canonical::canonicalizer::Canonicalizer>::universe_canonicalized_variables
-372,324 ???:<rustc_typeck::check::coercion::CoerceMany<&rustc_hir::hir::Expr>>::coerce
371,699 include/jemalloc/internal/emap.h:_rjem_je_tcache_bin_flush_small
370,640 include/jemalloc/internal/edata.h:_rjem_je_tcache_bin_flush_small
369,791 ???:<rustc_middle::ty::context::TyCtxt>::get_attrs
363,476 ???:findRefEdges(llvm::ModuleSummaryIndex&, llvm::User const*, llvm::SetVector<llvm::ValueInfo, std::vector<llvm::ValueInfo, std::allocator<llvm::ValueInfo> >, llvm::DenseSet<llvm::ValueInfo, llvm::DenseMapInfo<llvm::ValueInfo, void> > >&, llvm::SmallPtrSet<llvm::User const*, 8u>&)
-356,090 ???:rustc_middle::mir::traversal::reachable_as_bitset
354,035 ???:memcpy
353,496 obj/build/x86_64-unknown-linux-gnu/stage1-rustc/x86_64-unknown-linux-gnu/release/build/jemalloc-sys-8de766d3318ac835/out/build/src/tcache.c:_rjem_je_tcache_alloc_small_hard
352,824 ???:<indexmap::map::core::VacantEntry<rustc_middle::ty::sty::Region, ()>>::insert
343,194 ???:<rustc_middle::hir::map::Map>::walk_attributes::<rustc_lint::late::LateContextAndPass<rustc_lint::BuiltinCombinedLateLintPass>>
343,179 ???:<rustc_middle::ty::subst::GenericArg as rustc_middle::ty::fold::TypeFoldable>::visit_with::<rustc_privacy::DefIdVisitorSkeleton<rustc_privacy::ReachEverythingInTheInterfaceVisitor>>
342,960 include/jemalloc/internal/rtree.h:emap_try_acquire_edata_neighbor_impl
341,361 ???:<rustc_middle::mir::Place as core::convert::From<rustc_middle::mir::Local>>::from
338,755 include/jemalloc/internal/arena_inlines_b.h:_rjem_je_arena_cache_bin_fill_small
336,084 include/jemalloc/internal/arena_inlines_b.h:_rjem_je_tcache_bin_flush_small
334,732 ???:<&rustc_middle::ty::list::List<rustc_middle::ty::subst::GenericArg> as rustc_middle::ty::fold::TypeFoldable>::visit_with::<rustc_middle::ty::fold::LateBoundRegionsCollector>
-331,741 ???:rustc_lint::late::late_lint_crate::<rustc_lint::BuiltinCombinedLateLintPass>
-330,148 ???:(anonymous namespace)::LazyValueInfoImpl::solve() [clone 315,398 ???:llvm::AnalysisResolver::getAnalysisIfAvailable(void const*) const
-313,704 ???:<rustc_metadata::rmeta::encoder::EncodeContext as rustc_serialize::serialize::Encoder>::emit_seq::<<[rustc_middle::mir::Statement] as rustc_serialize::serialize::Encodable<rustc_metadata::rmeta::encoder::EncodeContext>>::encode::{closure#0}>
309,826 include/jemalloc/internal/jemalloc_internal_inlines_b.h:arena_choose
309,309 include/jemalloc/internal/cache_bin.h:_rjem_je_arena_cache_bin_fill_small
307,466 ???:<rustc_infer::infer::InferCtxt as rustc_typeck::outlives::outlives_bounds::InferCtxtExt>::implied_outlives_bounds
-306,260 ???:<rustc_middle::ty::sty::Region as rustc_middle::ty::fold::TypeFoldable>::try_fold_with::<rustc_infer::infer::canonical::canonicalizer::Canonicalizer>
305,604 obj/build/x86_64-unknown-linux-gnu/stage1-rustc/x86_64-unknown-linux-gnu/release/build/jemalloc-sys-8de766d3318ac835/out/build/src/arena.c:_rjem_je_arena_ralloc
-304,672 ???:<rustc_middle::ty::Ty as rustc_middle::ty::fold::TypeFoldable>::visit_with::<rustc_privacy::DefIdVisitorSkeleton<rustc_privacy::TypePrivacyVisitor>>
-304,638 ???:<rustc_middle::ty::Ty as rustc_middle::ty::fold::TypeFoldable>::super_fold_with::<rustc_middle::ty::fold::RegionFolder>
301,758 ???:rustc_mir_transform::pass_manager::run_passes
-299,763 ???:<rustc_mir_transform::required_consts::RequiredConstsVisitor as rustc_middle::mir::visit::Visitor>::visit_basic_block_data
299,111 ???:<rustc_mir_dataflow::framework::engine::Engine<rustc_mir_dataflow::impls::liveness::MaybeTransitiveLiveLocals>>::new_generic
298,127 ???:<rustc_middle::hir::map::Map>::deep_visit_all_item_likes::<rustc_mir_transform::mir_keys::GatherCtors>
-296,656 ???:<rustc_middle::ty::Ty as rustc_serialize::serialize::Encodable<rustc_metadata::rmeta::encoder::EncodeContext>>::encode
292,300 include/jemalloc/internal/sz.h:free
287,985 ???:<rustc_infer::infer::canonical::canonicalizer::Canonicalizer as rustc_middle::ty::fold::TypeFolder>::fold_ty
285,854 obj/build/x86_64-unknown-linux-gnu/stage1-rustc/x86_64-unknown-linux-gnu/release/build/jemalloc-sys-8de766d3318ac835/out/build/src/extent.c:_rjem_je_ecache_evict
285,719 obj/build/x86_64-unknown-linux-gnu/stage1-rustc/x86_64-unknown-linux-gnu/release/build/jemalloc-sys-8de766d3318ac835/out/build/src/jemalloc.c:_rjem_je_malloc_default
278,507 obj/build/x86_64-unknown-linux-gnu/stage1-rustc/x86_64-unknown-linux-gnu/release/build/jemalloc-sys-8de766d3318ac835/out/build/src/pac.c:pac_decay_to_limit
-276,623 ???:rustc_mir_transform::mir_keys
270,107 ???:llvm::SmallPtrSetImplBase::insert_imp_big(void const*)
267,702 include/jemalloc/internal/extent.h:emap_try_acquire_edata_neighbor_impl
266,889 include/jemalloc/internal/thread_event.h:calloc
-262,717 ???:rustc_middle::mir::traversal::reverse_postorder
262,589 ???:llvm::detail::PassModel<llvm::Function, llvm::SimplifyCFGPass, llvm::PreservedAnalyses, llvm::AnalysisManager<llvm::Function>>::run(llvm::Function&, llvm::AnalysisManager<llvm::Function>&)
261,120 ???:rustc_middle::ty::util::fold_list::<rustc_infer::infer::freshen::TypeFreshener, 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::fold::TypeFoldable>::try_super_fold_with<rustc_infer::infer::freshen::TypeFreshener>::{closure#0}>
257,351 ???:<rustc_mir_transform::elaborate_drops::ElaborateDropsCtxt>::create_drop_flag
251,834 library/std/src/alloc.rs:__rdl_alloc
251,182 include/jemalloc/internal/thread_event.h:malloc
-243,660 ???:<&mut <&rustc_middle::ty::list::List<rustc_middle::ty::subst::GenericArg> as rustc_serialize::serialize::Decodable<rustc_metadata::rmeta::decoder::DecodeContext>>::decode::{closure#0} as core::ops::function::FnOnce<(usize,)>>::call_once
-241,733 ???:<rustc_middle::mir::Body>::is_cfg_cyclic
241,647 ???:<rustc_middle::ty::context::TyCtxt>::def_kind::<rustc_span::def_id::DefId>
241,163 ???:<rustc_typeck::check::coercion::Coerce>::unify
-236,868 ???:<hashbrown::map::HashMap<rustc_mir_dataflow::move_paths::MovePathIndex, rustc_middle::mir::Local, core::hash::BuildHasherDefault<rustc_hash::FxHasher>>>::rustc_entry
229,922 ???:<rustc_middle::ty::Ty as rustc_middle::ty::fold::TypeFoldable>::super_fold_with::<rustc_infer::infer::resolve::OpportunisticVarResolver>
225,558 obj/build/x86_64-unknown-linux-gnu/stage1-rustc/x86_64-unknown-linux-gnu/release/build/jemalloc-sys-8de766d3318ac835/out/build/src/extent.c:_rjem_je_extent_dalloc_wrapper
224,445 ???:<rustc_typeck::check::coercion::Coerce>::coerce
224,366 include/jemalloc/internal/ph.h:_rjem_je_edata_heap_remove_first
224,316 obj/build/x86_64-unknown-linux-gnu/stage1-rustc/x86_64-unknown-linux-gnu/release/build/jemalloc-sys-8de766d3318ac835/out/build/src/jemalloc.c:do_rallocx
-223,589 ???:<rustc_infer::infer::free_regions::FreeRegionMap>::relate_regions
222,803 ???:<rustc_trait_selection::traits::fulfill::FulfillProcessor>::process_changed_obligations
220,885 ???:<rustc_middle::ty::fold::RegionFolder as rustc_middle::ty::fold::FallibleTypeFolder>::try_fold_ty
219,900 ???:<rustc_index::bit_set::ChunkedBitSet<rustc_middle::mir::Local> as core::clone::Clone>::clone
-219,263 ???:<rustc_metadata::rmeta::encoder::EncodeContext as rustc_hir::intravisit::Visitor>::visit_item
218,609 ???:<rustc_middle::ty::subst::GenericArg as rustc_middle::ty::relate::Relate>::relate::<rustc_infer::infer::sub::Sub>
-218,101 ???:<rustc_middle::mir::Operand as rustc_serialize::serialize::Encodable<rustc_metadata::rmeta::encoder::EncodeContext>>::encode
213,075 ???:<rustc_privacy::DefIdVisitorSkeleton<rustc_privacy::ReachEverythingInTheInterfaceVisitor> as rustc_middle::ty::fold::TypeVisitor>::visit_ty
209,075 ???:<rustc_middle::ty::PredicateKind as rustc_middle::ty::fold::TypeFoldable>::has_escaping_bound_vars
-208,631 ???:<ena::unify::UnificationTable<ena::unify::backing_vec::InPlace<rustc_infer::infer::type_variable::TyVidEqKey, &mut alloc::vec::Vec<ena::unify::VarValue<rustc_infer::infer::type_variable::TyVidEqKey>>, &mut rustc_infer::infer::undo_log::InferCtxtUndoLogs>>>::uninlined_get_root_key
207,635 ???:<hashbrown::map::HashMap<rustc_middle::infer::canonical::Canonical<rustc_middle::ty::ParamEnvAnd<rustc_middle::ty::sty::ProjectionTy>>, (core::result::Result<&rustc_middle::infer::canonical::Canonical<rustc_middle::infer::canonical::QueryResponse<rustc_middle::traits::query::NormalizationResult>>, rustc_middle::traits::query::NoSolution>, rustc_query_system::dep_graph::graph::DepNodeIndex), core::hash::BuildHasherDefault<rustc_hash::FxHasher>>>::insert
-207,461 ???:<rustc_index::bit_set::ChunkedBitSet<rustc_mir_dataflow::move_paths::MovePathIndex> as core::clone::Clone>::clone
205,965 ???:<rustc_middle::ty::fold::RegionFolder as rustc_middle::ty::fold::FallibleTypeFolder>::try_fold_const
-205,846 ???: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}>
205,140 library/std/src/sys/unix/alloc.rs:__rdl_alloc_zeroed
-200,306 ???:<rustc_middle::ty::Ty as rustc_middle::ty::fold::TypeFoldable>::super_fold_with::<rustc_infer::infer::freshen::TypeFreshener>
-200,088 ???:<core::iter::adapters::copied::Copied<core::slice::iter::Iter<rustc_middle::ty::subst::GenericArg>> as core::iter::traits::iterator::Iterator>::try_fold::<(), core::iter::traits::iterator::Iterator::try_for_each::call<rustc_middle::ty::subst::GenericArg, core::ops::control_flow::ControlFlow<!>, <&rustc_middle::ty::list::List<rustc_middle::ty::subst::GenericArg> as rustc_middle::ty::fold::TypeFoldable>::super_visit_with<rustc_middle::ty::fold::LateBoundRegionsCollector>::{closure#0}>::{closure#0}, core::ops::control_flow::ControlFlow<!>>
197,295 ???:<smallvec::SmallVec<[rustc_middle::ty::Ty; 8]>>::insert_from_slice
-196,823 ???:<&rustc_middle::ty::list::List<rustc_middle::ty::subst::GenericArg> as rustc_middle::ty::fold::TypeFoldable>::visit_with::<<rustc_middle::ty::context::TyCtxt>::any_free_region_meets::RegionVisitor<<rustc_middle::ty::context::TyCtxt>::for_each_free_region<&rustc_middle::ty::list::List<rustc_middle::ty::subst::GenericArg>, <rustc_borrowck::constraint_generation::ConstraintGeneration>::add_regular_live_constraint<&rustc_middle::ty::list::List<rustc_middle::ty::subst::GenericArg>>::{closure#0}>::{closure#0}>>
-194,682 ???:rustc_query_system::query::plumbing::try_get_cached::<rustc_middle::ty::context::TyCtxt, rustc_query_system::query::caches::ArenaCache<rustc_span::def_id::DefId, rustc_middle::ty::generics::Generics>, &rustc_middle::ty::generics::Generics, rustc_middle::ty::query::copy<&rustc_middle::ty::generics::Generics>>
193,942 ???:<rustc_infer::infer::at::At as rustc_trait_selection::traits::query::dropck_outlives::AtExt>::dropck_outlives
193,535 ???:<rustc_middle::ty::context::TyCtxt>::intern_type_list
190,088 ???:llvm::DenseMap<llvm::GVNPass::Expression, unsigned int, llvm::DenseMapInfo<llvm::GVNPass::Expression, void>, llvm::detail::DenseMapPair<llvm::GVNPass::Expression, unsigned int> >::shrink_and_clear()
188,630 ???:alloc::raw_vec::finish_grow::<alloc::alloc::Global>
-188,298 ???:llvm::GVNPass::cleanupGlobalSets()
186,936 ???:<rustc_middle::ty::sty::EarlyBinder<rustc_middle::ty::Predicate> as rustc_middle::ty::subst::Subst>::subst
186,586 ???:<rustc_mir_dataflow::framework::engine::RustcMirAttrs>::parse
186,307 ???:<rustc_typeck::variance::solve::SolveContext>::enforce_const_invariance
184,854 include/jemalloc/internal/sz.h:calloc
184,653 include/jemalloc/internal/tsd.h:calloc
184,616 include/jemalloc/internal/cache_bin.h:calloc
184,604 include/jemalloc/internal/bitmap.h:_rjem_je_tcache_bin_flush_small
-184,233 ???:<rustc_middle::infer::canonical::Canonical<rustc_middle::ty::context::UserType>>::is_identity
183,576 ???:llvm::PMDataManager::removeNotPreservedAnalysis(llvm::Pass*)
-183,545 ???:<rustc_privacy::DefIdVisitorSkeleton<rustc_privacy::TypePrivacyVisitor> as rustc_middle::ty::fold::TypeVisitor>::visit_ty
-182,401 ???:<rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::FnSig> as rustc_middle::ty::fold::TypeFoldable>::super_fold_with::<rustc_middle::ty::subst::SubstFolder>
-180,144 ???:<smallvec::SmallVec<[rustc_middle::ty::subst::GenericArg; 8]>>::extend_from_slice
180,144 ???:<smallvec::SmallVec<[rustc_middle::ty::subst::GenericArg; 8]>>::insert_from_slice
177,444 ???:<alloc::vec::Vec<rustc_index::bit_set::Chunk>>::into_boxed_slice
175,170 ???:<rustc_span::symbol::Symbol>::intern
172,694 ???:<rustc_mir_dataflow::framework::direction::Backward as rustc_mir_dataflow::framework::direction::Direction>::is_forward
172,668 include/jemalloc/internal/thread_event.h:_rjem_je_malloc_default
-171,455 ???:llvm::DenseMap<void const*, llvm::Pass*, llvm::DenseMapInfo<void const*, void>, llvm::detail::DenseMapPair<void const*, llvm::Pass*> >::grow(unsigned int)
-170,628 ???:<rustc_mir_transform::add_call_guards::AddCallGuards as rustc_middle::mir::MirPass>::run_pass
-167,955 ???:<rustc_const_eval::transform::validate::Validator as rustc_middle::mir::MirPass>::run_pass
167,881 ???:<rustc_metadata::rmeta::encoder::EncodeContext as rustc_serialize::serialize::Encoder>::emit_enum_variant::<<rustc_middle::ty::subst::GenericArgKind as rustc_serialize::serialize::Encodable<rustc_metadata::rmeta::encoder::EncodeContext>>::encode::{closure#0}::{closure#0}>
165,878 include/jemalloc/internal/tcache_inlines.h:calloc
-165,362 ???:<rustc_middle::ty::fold::LateBoundRegionsCollector as rustc_middle::ty::fold::TypeVisitor>::visit_ty
164,247 obj/build/x86_64-unknown-linux-gnu/stage1-rustc/x86_64-unknown-linux-gnu/release/build/jemalloc-sys-8de766d3318ac835/out/build/src/arena.c:_rjem_je_arena_ralloc_no_move
-163,215 ???:<rustc_middle::ty::sty::Binder<rustc_middle::ty::PredicateKind>>::dummy
162,432 ???:<rustc_infer::infer::sub::Sub as rustc_middle::ty::relate::TypeRelation>::relate::<&rustc_middle::ty::list::List<rustc_middle::ty::sty::Binder<rustc_middle::ty::sty::ExistentialPredicate>>>
-162,432 ???:<&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::sub::Sub>
162,170 ???:<rustc_middle::ty::subst::GenericArg as rustc_middle::ty::fold::TypeFoldable>::visit_with::<rustc_privacy::DefIdVisitorSkeleton<rustc_privacy::SearchInterfaceForPrivateItemsVisitor>>
161,590 ???:<rustc_mir_dataflow::framework::EffectIndex>::next_in_backward_order
161,476 ???:<rustc_typeck::check::fn_ctxt::FnCtxt>::instantiate_value_path
-160,617 ???:<rustc_middle::ty::subst::GenericArg as rustc_middle::ty::fold::TypeFoldable>::try_fold_with::<rustc_middle::ty::fold::RegionFolder>
159,130 include/jemalloc/internal/mutex.h:_rjem_je_arena_cache_bin_fill_small
-157,702 ???:rustc_data_structures::sync::par_for_each_in::<&alloc::vec::Vec<rustc_hir::hir::MaybeOwner<&rustc_hir::hir::OwnerInfo>>, <rustc_middle::hir::map::Map>::par_visit_all_item_likes<rustc_typeck::check::wfcheck::CheckTypeWellFormedVisitor>::{closure#0}>
157,406 ???:<rustc_infer::traits::util::Elaborator as core::iter::traits::iterator::Iterator>::next

In any case, this 1) is a performance improvement in most cases, 2) is a de-facto prerequisite for dest prop, and 3) causes the compiler to emit faster object code, so I generally think the regressions are justified.

Meta sidenote: What are the rules around applying the "perf-regression-triaged" label? If I am investigating compiler perf anyway, should I also be applying the label or is this something that should be reserved for wg-perf/people with r+ rights?

@JakobDegen
JakobDegen deleted the dse branch May 30, 2022 00:13
Comment threadsrc/test/mir-opt/tls-access.rs
@pnkfelix

Copy link
Copy Markdown
Contributor
  • The changes here were investigated by the PR author.
  • Marking as triaged based on their investigation.

@rustbot label: +perf-regression-triaged

@rustbotrustbot added the perf-regression-triaged The performance regression has been triaged. label May 31, 2022
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

merged-by-borsThis PR was explicitly merged by bors.perf-regressionPerformance regression.perf-regression-triagedThe performance regression has been triaged.S-waiting-on-borsStatus: Waiting on bors to run and complete tests. Bors will change the label on completion.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

12 participants

@JakobDegen@tmiasko@rust-timer@bors@rust-log-analyzer@RalfJung@cjgillot@rust-highfive@pnkfelix@emilyalbini@memoryruins@rustbot