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

Nested async closures result in exponential compilation time increase #83031

Open
blazzy opened this issue Mar 11, 2021 · 6 comments
Open

Nested async closures result in exponential compilation time increase #83031

blazzy opened this issue Mar 11, 2021 · 6 comments
Labels
A-async-await Area: Async & Await A-closures Area: closures (`|args| { .. }`) AsyncAwait-Triaged Async-await issues that have been triaged during a working group meeting. C-bug Category: This is a bug. I-compiletime Issue: Problems and improvements with respect to compile times. P-medium Medium priority T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Comments

@blazzy
Copy link

blazzy commented Mar 11, 2021

I've noticed exponential increases in compilation times as I nest async closures within each other.

I tried this code:

macro_rules! compose_middleware_inner {
  ( $route:ident, $first:ident, $second:ident, $($tail:ident), +) => {
    $first(|| async {
        compose_middleware_inner!($route, $second, $($tail),+)
    }).await
  };
  ( $route: ident, $first:ident, $second:ident ) => {
    $first(|| async move { $second($route).await }).await
  };
}

macro_rules! compose_middleware {
    ( $name:ident, $($tail:ident), +) => {
        pub async fn $name<N, Fut>(route: N)
        where
            N: FnOnce() -> Fut,
            Fut: std::future::Future<Output = ()>,
        {
            compose_middleware_inner!(route, $($tail),+)
        }
    }
}

async fn log<N, Fut>(next: N)
where
    N: FnOnce() -> Fut,
    Fut: std::future::Future<Output = ()>,
{
    println!("log start");
    next().await;
    println!("log end");
}

compose_middleware!(
    my_middleware, log, log, log, log, log, log, log, log, log, log, log, log, log
);

That compose_middleware! macro invocation generates a function that looks something like this:

pub async fn my_middleware<N, Fut>(route: N)
where
    N: FnOnce() -> Fut,
    Fut: Future<Output = ()>,
{
    log(|| async { log(|| async { log(|| async move { log(route).await }).await }).await }).await
}

I expected to see this happen: I expected this code to build within seconds

Instead, this happened: At around 3 levels it takes less than a second to build. At around 9 levels it takes around a minute to build. At around 14 levels it takes around 10 minutes to build.

Meta

I've experienced this issue on nightly, stable, and beta. And I've sampled random nightly versions going back as far as 1.39 and still witnessed the problem. There was a good bit of variability in build times, but it generally seemed to increase exponentially.

I threw this little repo up to test the issue: https://github.com/blazzy/slow-rust-async/blob/master/src/lib.rs

I thought it might be related to this issue #72408 with nested closures. Or this issue #75992 with levels of async, but those look to be resolved.

@blazzy blazzy added the C-bug Category: This is a bug. label Mar 11, 2021
@blazzy
Copy link
Author

blazzy commented Mar 11, 2021

cargo --release builds everything a lot faster(edit: <- this was wrong), but it still has the exponential time increase issue.

I also tried making a nested async version without the generic functions.

pub async fn my_middleware<N, Fut>(route: N)
where
    N: FnOnce() -> Fut,
    Fut: Future<Output = ()>,
{
    (| | async { (| | async { (| | async { (| | async { (| | async { (| | async { (| | async { (| | async { (| | async { (| | async { (| | async { (| | async move { route () . await }) () . await }) () . await }) () . await }) () . await }) () . await }) () . await }) () . await }) () . await }) () . await }) () . await }) () . await }) () . await
}

And I tried making a nested generic function version without the async:

pub fn my_middleware<N>(route: N)
where
    N: FnOnce() -> (),
{
    log(|| {
        log(|| {
            log(|| {
                log(|| {
                    ...
                    log(route);
                });
            });
        });
    })
}

Both of these versions compiled very quickly and don't exhibit the exponential problem.

@camelid camelid added A-async-await Area: Async & Await A-closures Area: closures (`|args| { .. }`) I-compiletime Issue: Problems and improvements with respect to compile times. I-prioritize Issue: Indicates that prioritization has been requested for this issue. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Mar 12, 2021
@tmandry
Copy link
Member

tmandry commented Mar 12, 2021

Release mode being faster suggests that the slowdown is happening after MIR optimization somewhere.

Possible duplicate of #75992 or #54540.

@tmandry
Copy link
Member

tmandry commented Mar 12, 2021

I closed those other issues, so we can keep this issue open. (Those issues might still be a good source of test cases / benchmarks.)

@blazzy
Copy link
Author

blazzy commented Mar 13, 2021

Sorry, the --release builds don't actually seem to be faster. I was getting less rigorous in keeping track of what I was measuring as I multi-tasked and waited for minutes long builds to complete.

I made a few cargo rustc -- -Zself-profile runs. It's consistently dominated by mir_borrowck and check_mod_privacy.

Folded here is an example summary:
+--------------------------------------------------+-----------+-----------------+----------+------------+
| Item                                             | Self time | % of total time | Time     | Item count |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| mir_borrowck                                     | 76.89s    | 33.794          | 288.22s  | 32         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| check_mod_privacy                                | 60.46s    | 26.574          | 60.46s   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| type_op_prove_predicate                          | 27.68s    | 12.164          | 27.68s   | 260        |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| normalize_generic_arg_after_erasing_regions      | 24.58s    | 10.802          | 24.58s   | 135        |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| typeck                                           | 13.79s    | 6.062           | 13.84s   | 32         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| normalize_projection_ty                          | 5.46s     | 2.402           | 5.46s    | 17         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| evaluate_obligation                              | 5.35s     | 2.351           | 5.36s    | 330        |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| privacy_access_levels                            | 5.04s     | 2.216           | 5.04s    | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| check_mod_item_types                             | 4.56s     | 2.006           | 133.80s  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| optimized_mir                                    | 3.45s     | 1.517           | 36.20s   | 32         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| expand_crate                                     | 19.92ms   | 0.009           | 42.49ms  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_register_crate                          | 18.63ms   | 0.008           | 22.47ms  | 15         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| LLVM_passes                                      | 14.13ms   | 0.006           | 14.13ms  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| LLVM_module_codegen_emit_obj                     | 11.34ms   | 0.005           | 11.34ms  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_impl_trait_ref             | 10.97ms   | 0.005           | 20.36ms  | 124        |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| mir_drops_elaborated_and_const_checked           | 10.45ms   | 0.005           | 16.46s   | 32         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| late_resolve_crate                               | 9.85ms    | 0.004           | 9.85ms   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_adt_def                    | 9.08ms    | 0.004           | 11.58ms  | 114        |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| generate_crate_metadata                          | 8.85ms    | 0.004           | 28.06s   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| encode_query_results_for                         | 7.12ms    | 0.003           | 7.12ms   | 24         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| codegen_crate                                    | 6.97ms    | 0.003           | 15.00ms  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| implementations_of_trait                         | 6.08ms    | 0.003           | 6.49ms   | 135        |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| codegen_module                                   | 5.85ms    | 0.003           | 5.85ms   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| mir_built                                        | 4.52ms    | 0.002           | 17.50s   | 32         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| crate_lints                                      | 4.08ms    | 0.002           | 4.19ms   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_load_macro                              | 3.94ms    | 0.002           | 3.94ms   | 3          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| region_scope_tree                                | 3.47ms    | 0.002           | 3.47ms   | 32         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_impl_parent                | 3.35ms    | 0.001           | 3.35ms   | 99         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_explicit_predicates_of     | 3.07ms    | 0.001           | 3.55ms   | 37         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_type_of                    | 3.00ms    | 0.001           | 3.45ms   | 31         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| finalize_imports                                 | 2.71ms    | 0.001           | 2.71ms   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_item_attrs                 | 2.55ms    | 0.001           | 2.55ms   | 121        |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| free_global_ctxt                                 | 2.50ms    | 0.001           | 2.50ms   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| incr_comp_serialize_result_cache                 | 2.42ms    | 0.001           | 10.26ms  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| check_match                                      | 2.22ms    | 0.001           | 2.22ms   | 32         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| self_profile_alloc_query_strings                 | 2.19ms    | 0.001           | 2.19ms   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| type_op_normalize_predicate                      | 2.15ms    | 0.001           | 2.15ms   | 174        |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| lint_mod                                         | 2.14ms    | 0.001           | 2.14ms   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| check_mod_liveness                               | 2.08ms    | 0.001           | 2.63ms   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| link_rlib                                        | 2.08ms    | 0.001           | 2.08ms   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| type_check_crate                                 | 1.96ms    | 0.001           | 133.81s  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| LLVM_module_optimize                             | 1.94ms    | 0.001           | 2.43ms   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| crate_variances                                  | 1.93ms    | 0.001           | 1.93ms   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| predicates_of                                    | 1.52ms    | 0.001           | 7.29ms   | 74         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_explicit_item_bounds       | 1.45ms    | 0.001           | 1.45ms   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| cgu_partitioning_place_roots                     | 1.36ms    | 0.001           | 1.37ms   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| write_crate_metadata                             | 1.31ms    | 0.001           | 1.31ms   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| type_op_normalize_fn_sig                         | 1.31ms    | 0.001           | 5.47s    | 63         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| layout_raw                                       | 1.29ms    | 0.001           | 16.31s   | 51         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| reachable_non_generics                           | 1.26ms    | 0.001           | 2.28ms   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| type_op_normalize_ty                             | 1.22ms    | 0.001           | 1.22ms   | 91         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| incr_comp_prepare_session_directory              | 1.15ms    | 0.001           | 1.15ms   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| death_checking                                   | 1.15ms    | 0.001           | 1.18ms   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_expn_that_defined          | 1.06ms    | 0.000           | 1.06ms   | 5          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_inferred_outlives_of       | 1.03ms    | 0.000           | 1.03ms   | 37         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| reachable_set                                    | 1.01ms    | 0.000           | 1.01ms   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| defined_lang_items                               | 1.00ms    | 0.000           | 1.04ms   | 15         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| mir_promoted                                     | 951.80µs  | 0.000           | 17.51s   | 32         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| hir_lowering                                     | 949.76µs  | 0.000           | 949.76µs | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| needs_drop_raw                                   | 938.76µs  | 0.000           | 3.66s    | 113        |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| parse_crate                                      | 937.47µs  | 0.000           | 937.47µs | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| mir_const                                        | 917.67µs  | 0.000           | 17.50s   | 32         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| all_crate_nums                                   | 855.56µs  | 0.000           | 855.56µs | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| collect_and_partition_mono_items                 | 849.61µs  | 0.000           | 2.46ms   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| build_hir_map                                    | 843.69µs  | 0.000           | 843.69µs | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| incr_comp_encode_serialized_dep_graph            | 832.89µs  | 0.000           | 832.89µs | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| exported_symbols                                 | 825.67µs  | 0.000           | 5.56ms   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| param_env                                        | 801.61µs  | 0.000           | 1.53ms   | 41         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| is_copy_raw                                      | 782.96µs  | 0.000           | 3.66s    | 152        |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_lookup_stability           | 774.88µs  | 0.000           | 774.88µs | 10         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_lookup_deprecation_entry   | 770.34µs  | 0.000           | 770.34µs | 9          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| implied_outlives_bounds                          | 746.36µs  | 0.000           | 746.36µs | 51         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| impl_trait_ref                                   | 741.21µs  | 0.000           | 21.10ms  | 124        |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| incr_comp_persist_result_cache                   | 732.37µs  | 0.000           | 11.00ms  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| drop_compiler                                    | 730.29µs  | 0.000           | 730.29µs | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| erase_regions_ty                                 | 725.36µs  | 0.000           | 5.25ms   | 96         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| encode_query_results                             | 697.96µs  | 0.000           | 7.82ms   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| unused_lib_feature_checking                      | 687.65µs  | 0.000           | 1.06ms   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| find_cgu_reuse                                   | 652.66µs  | 0.000           | 652.66µs | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_fn_sig                     | 642.34µs  | 0.000           | 743.89µs | 7          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| dropck_outlives                                  | 609.24µs  | 0.000           | 23.17ms  | 83         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| native_libraries                                 | 598.60µs  | 0.000           | 1.10ms   | 16         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| check_item_well_formed                           | 597.84µs  | 0.000           | 5.30ms   | 7          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_variances_of               | 587.65µs  | 0.000           | 587.65µs | 7          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| trait_impls_of                                   | 568.94µs  | 0.000           | 7.07ms   | 9          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| type_uninhabited_from                            | 541.63µs  | 0.000           | 550.43µs | 72         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| unsafety_check_result                            | 537.96µs  | 0.000           | 25.26s   | 32         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| dependency_formats                               | 529.43µs  | 0.000           | 529.43µs | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_native_libraries           | 504.75µs  | 0.000           | 504.75µs | 15         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| LLVM_module_optimize_module_passes               | 491.58µs  | 0.000           | 491.58µs | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| link_binary                                      | 481.32µs  | 0.000           | 2.72ms   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| prepare_outputs                                  | 475.90µs  | 0.000           | 475.90µs | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_opt_def_kind               | 462.51µs  | 0.000           | 462.51µs | 46         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| dep_kind                                         | 448.61µs  | 0.000           | 451.64µs | 15         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_generics_of                | 415.94µs  | 0.000           | 415.94µs | 44         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| used_trait_imports                               | 414.07µs  | 0.000           | 414.07µs | 32         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_implementations_of_trait   | 413.82µs  | 0.000           | 413.82µs | 135        |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| promoted_mir                                     | 409.57µs  | 0.000           | 409.57µs | 32         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| explicit_predicates_of                           | 408.81µs  | 0.000           | 4.36ms   | 74         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| used_crate_source                                | 383.16µs  | 0.000           | 394.39µs | 15         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| serialize_work_products                          | 381.88µs  | 0.000           | 381.88µs | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| item_attrs                                       | 373.96µs  | 0.000           | 2.93ms   | 121        |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| get_lib_features                                 | 373.19µs  | 0.000           | 373.19µs | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| check_private_in_public                          | 372.50µs  | 0.000           | 379.34µs | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| copy_all_cgu_workproducts_to_incr_comp_cache_dir | 350.81µs  | 0.000           | 350.81µs | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_inherent_impls             | 345.78µs  | 0.000           | 345.78µs | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| misc_checking_3                                  | 344.30µs  | 0.000           | 65.51s   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| specialization_graph_of                          | 339.76µs  | 0.000           | 22.36ms  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| adt_def                                          | 332.94µs  | 0.000           | 11.91ms  | 114        |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| variances_of                                     | 324.87µs  | 0.000           | 2.85ms   | 9          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| generator_kind                                   | 286.05µs  | 0.000           | 286.05µs | 16         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_super_predicates_of        | 282.62µs  | 0.000           | 282.62µs | 4          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| check_mod_intrinsics                             | 276.59µs  | 0.000           | 276.59µs | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| extra_filename                                   | 275.65µs  | 0.000           | 281.25µs | 15         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| MIR_effect_checking                              | 260.44µs  | 0.000           | 260.44µs | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| param_env_reveal_all_normalized                  | 247.30µs  | 0.000           | 250.92µs | 32         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| incr_comp_finalize_session_directory             | 246.18µs  | 0.000           | 246.18µs | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| output_filenames                                 | 245.75µs  | 0.000           | 245.75µs | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| serialize_dep_graph                              | 239.60µs  | 0.000           | 12.37ms  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| incr_comp_persist_dep_graph                      | 234.65µs  | 0.000           | 1.14ms   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| generics_of                                      | 224.90µs  | 0.000           | 781.26µs | 81         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| predicates_defined_on                            | 222.00µs  | 0.000           | 5.71ms   | 74         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| mir_keys                                         | 198.74µs  | 0.000           | 198.74µs | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| codegen_fn_attrs                                 | 187.63µs  | 0.000           | 2.38ms   | 44         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| assert_symbols_are_distinct                      | 186.74µs  | 0.000           | 186.74µs | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| analysis                                         | 173.48µs  | 0.000           | 199.33s  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| layout_testing                                   | 164.45µs  | 0.000           | 164.45µs | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| is_sized_raw                                     | 163.96µs  | 0.000           | 1.69s    | 17         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| codegen_module_optimize                          | 161.41µs  | 0.000           | 14.00ms  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| foreign_modules                                  | 161.14µs  | 0.000           | 161.14µs | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| conservative_is_privately_uninhabited            | 157.66µs  | 0.000           | 691.46µs | 6          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| type_of                                          | 156.19µs  | 0.000           | 129.24s  | 65         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| configure_and_expand                             | 151.91µs  | 0.000           | 55.44ms  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| setup_global_ctxt                                | 148.56µs  | 0.000           | 148.56µs | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| upvars_mentioned                                 | 146.44µs  | 0.000           | 146.44µs | 32         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| drop_dep_graph                                   | 145.98µs  | 0.000           | 145.98µs | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| link_binary_remove_temps                         | 135.46µs  | 0.000           | 135.46µs | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| def_span                                         | 124.49µs  | 0.000           | 135.16µs | 56         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| check_mod_attrs                                  | 110.93µs  | 0.000           | 2.28ms   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| collect_mod_item_types                           | 108.48µs  | 0.000           | 1.13ms   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| check_mod_unstable_api_usage                     | 106.96µs  | 0.000           | 1.79ms   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| create_global_ctxt                               | 105.71µs  | 0.000           | 282.13µs | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| resolve_lifetimes                                | 104.29µs  | 0.000           | 113.14µs | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| inferred_outlives_of                             | 95.28µs   | 0.000           | 1.12ms   | 74         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| incr_comp_prepare_load_dep_graph                 | 93.12µs   | 0.000           | 93.12µs  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| early_lint_checks                                | 91.24µs   | 0.000           | 91.24µs  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| mir_const_qualif                                 | 87.16µs   | 0.000           | 87.16µs  | 32         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| impl_parent                                      | 85.73µs   | 0.000           | 3.43ms   | 99         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| opt_def_kind                                     | 85.56µs   | 0.000           | 554.84µs | 92         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| blocked_on_dep_graph_loading                     | 81.76µs   | 0.000           | 81.76µs  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| get_lang_items                                   | 73.22µs   | 0.000           | 1.97ms   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| stability_index                                  | 72.85µs   | 0.000           | 72.85µs  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| incr_comp_encode_dep_graph                       | 71.12µs   | 0.000           | 904.01µs | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| lint_levels                                      | 64.82µs   | 0.000           | 64.82µs  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| LLVM_module_codegen                              | 63.93µs   | 0.000           | 11.41ms  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| fn_sig                                           | 61.25µs   | 0.000           | 812.67µs | 9          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| incr_comp_garbage_collect_session_directories    | 60.84µs   | 0.000           | 60.84µs  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| explicit_item_bounds                             | 60.48µs   | 0.000           | 1.52ms   | 3          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| adt_dtorck_constraint                            | 60.42µs   | 0.000           | 44.99ms  | 7          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| mir_abstract_const                               | 57.43µs   | 0.000           | 57.43µs  | 32         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| visibility                                       | 57.29µs   | 0.000           | 64.60µs  | 58         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| associated_items                                 | 54.44µs   | 0.000           | 127.37µs | 5          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| pre_AST_expansion_lint_checks                    | 53.40µs   | 0.000           | 53.40µs  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| AST_validation                                   | 52.81µs   | 0.000           | 52.81µs  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| link_crate                                       | 51.80µs   | 0.000           | 2.77ms   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| supported_target_features                        | 48.09µs   | 0.000           | 48.09µs  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| crate_injection                                  | 47.82µs   | 0.000           | 47.82µs  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| hir_owner                                        | 46.61µs   | 0.000           | 904.69µs | 12         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| drop_ast                                         | 46.36µs   | 0.000           | 46.36µs  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| check_mod_loops                                  | 44.98µs   | 0.000           | 44.98µs  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| type_op_ascribe_user_type                        | 44.63µs   | 0.000           | 44.63µs  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| opt_const_param_of                               | 40.81µs   | 0.000           | 40.81µs  | 32         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| adt_drop_tys                                     | 39.66µs   | 0.000           | 201.26µs | 2          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| diagnostic_items                                 | 38.88µs   | 0.000           | 52.38µs  | 3          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| impl_polarity                                    | 37.91µs   | 0.000           | 46.27µs  | 11         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| lookup_deprecation_entry                         | 37.18µs   | 0.000           | 880.37µs | 18         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| match_checking                                   | 32.79µs   | 0.000           | 2.25ms   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| unused_generic_params                            | 31.30µs   | 0.000           | 31.30µs  | 32         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| check_mod_const_bodies                           | 31.29µs   | 0.000           | 37.51µs  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| hir_module_items                                 | 31.24µs   | 0.000           | 31.24µs  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| incr_comp_load_dep_graph                         | 30.41µs   | 0.000           | 30.41µs  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| wf_checking                                      | 30.17µs   | 0.000           | 5.33ms   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| expn_that_defined                                | 29.50µs   | 0.000           | 1.09ms   | 5          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| features_query                                   | 29.36µs   | 0.000           | 29.36µs  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| item_bounds                                      | 28.58µs   | 0.000           | 1.49ms   | 3          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_adt_destructor             | 28.27µs   | 0.000           | 22.42ms  | 8          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| original_crate_name                              | 28.17µs   | 0.000           | 32.69µs  | 16         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| incr_comp_load_query_result_cache                | 27.86µs   | 0.000           | 27.86µs  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| lookup_stability                                 | 27.71µs   | 0.000           | 802.59µs | 11         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| adt_sized_constraint                             | 27.58µs   | 0.000           | 414.04µs | 6          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| is_panic_runtime                                 | 27.54µs   | 0.000           | 32.45µs  | 16         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| object_lifetime_defaults_map                     | 27.28µs   | 0.000           | 140.42µs | 7          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_defined_lang_items         | 27.08µs   | 0.000           | 42.89µs  | 15         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| trait_def                                        | 27.03µs   | 0.000           | 34.98µs  | 7          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| resolve_instance                                 | 25.94µs   | 0.000           | 43.96µs  | 2          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| typeck_item_bodies                               | 25.49µs   | 0.000           | 25.49µs  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| coherence_checking                               | 24.89µs   | 0.000           | 48.35µs  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_associated_item_def_ids    | 24.70µs   | 0.000           | 24.70µs  | 5          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| partition_and_assert_distinct_symbols            | 24.33µs   | 0.000           | 1.59ms   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| associated_item                                  | 24.04µs   | 0.000           | 36.11µs  | 12         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| link_binary_check_files_are_writeable            | 22.64µs   | 0.000           | 22.64µs  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| associated_item_def_ids                          | 22.43µs   | 0.000           | 47.13µs  | 5          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| looking_for_entry_point                          | 22.06µs   | 0.000           | 32.36µs  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| complete_gated_feature_checking                  | 21.77µs   | 0.000           | 21.77µs  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| crate_hash                                       | 20.23µs   | 0.000           | 23.32µs  | 16         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| link                                             | 18.94µs   | 0.000           | 3.93ms   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| crate_disambiguator                              | 18.80µs   | 0.000           | 21.97µs  | 16         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| crate_name                                       | 17.69µs   | 0.000           | 21.35µs  | 16         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| lit_to_const                                     | 17.67µs   | 0.000           | 17.67µs  | 2          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| looking_for_plugin_registrar                     | 17.47µs   | 0.000           | 27.71µs  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| coherent_trait                                   | 17.24µs   | 0.000           | 22.37ms  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| misc_checking_1                                  | 16.91µs   | 0.000           | 4.24ms   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| hir_crate                                        | 15.64µs   | 0.000           | 15.64µs  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| inherent_impls                                   | 15.57µs   | 0.000           | 361.35µs | 5          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| module_exports                                   | 15.46µs   | 0.000           | 15.46µs  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| finalize_macro_resolutions                       | 15.40µs   | 0.000           | 15.40µs  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| hir_owner_nodes                                  | 14.60µs   | 0.000           | 14.60µs  | 4          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| index_hir                                        | 14.39µs   | 0.000           | 858.08µs | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_diagnostic_items           | 13.50µs   | 0.000           | 13.50µs  | 2          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| resolve_postprocess                              | 12.86µs   | 0.000           | 12.86µs  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| monomorphization_collector_root_collections      | 12.57µs   | 0.000           | 12.57µs  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| maybe_unused_extern_crates                       | 12.50µs   | 0.000           | 12.50µs  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| is_compiler_builtins                             | 12.30µs   | 0.000           | 13.62µs  | 16         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_associated_item            | 12.07µs   | 0.000           | 12.07µs  | 12         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| check_mod_naked_functions                        | 11.93µs   | 0.000           | 11.93µs  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| macro_expand_crate                               | 11.89µs   | 0.000           | 42.50ms  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| in_scope_traits_map                              | 11.67µs   | 0.000           | 11.67µs  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| join_worker_thread                               | 11.30µs   | 0.000           | 11.30µs  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| crate_inherent_impls                             | 11.27µs   | 0.000           | 11.27µs  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| normalize_opaque_types                           | 11.25µs   | 0.000           | 11.25µs  | 2          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_used_crate_source          | 11.23µs   | 0.000           | 11.23µs  | 15         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| resolve_check_unused                             | 10.95µs   | 0.000           | 10.95µs  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| crate_host_hash                                  | 10.88µs   | 0.000           | 13.80µs  | 15         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| is_no_builtins                                   | 10.83µs   | 0.000           | 12.13µs  | 15         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_def_span                   | 10.67µs   | 0.000           | 10.67µs  | 14         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| entry_fn                                         | 10.30µs   | 0.000           | 10.30µs  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| plugin_registrar_fn                              | 10.24µs   | 0.000           | 10.24µs  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| all_local_trait_impls                            | 9.74µs    | 0.000           | 9.74µs   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| adt_destructor                                   | 8.94µs    | 0.000           | 22.42ms  | 8          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| is_profiler_runtime                              | 8.83µs    | 0.000           | 10.10µs  | 15         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| missing_lang_items                               | 8.73µs    | 0.000           | 16.37µs  | 15         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_impl_polarity              | 8.36µs    | 0.000           | 8.36µs   | 11         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| codegen_unit                                     | 8.23µs    | 0.000           | 8.23µs   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_trait_def                  | 7.96µs    | 0.000           | 7.96µs   | 7          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| postorder_cnums                                  | 7.79µs    | 0.000           | 7.79µs   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_missing_lang_items         | 7.64µs    | 0.000           | 7.64µs   | 15         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| parent_module_from_def_id                        | 7.56µs    | 0.000           | 7.56µs   | 4          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| link_args                                        | 7.40µs    | 0.000           | 7.40µs   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_visibility                 | 7.30µs    | 0.000           | 7.30µs   | 20         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| type_collecting                                  | 6.88µs    | 0.000           | 1.14ms   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| finish_ongoing_codegen                           | 6.61µs    | 0.000           | 368.72µs | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| check_mod_impl_wf                                | 6.39µs    | 0.000           | 6.39µs   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| cgu_partitioning_merge_cgus                      | 6.37µs    | 0.000           | 6.37µs   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| privacy_checking_modules                         | 6.34µs    | 0.000           | 60.46s   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| module_lints                                     | 6.29µs    | 0.000           | 2.15ms   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| has_global_allocator                             | 6.26µs    | 0.000           | 6.26µs   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| super_predicates_of                              | 6.25µs    | 0.000           | 288.87µs | 4          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| is_const_fn_raw                                  | 6.22µs    | 0.000           | 6.22µs   | 2          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| liveness_and_intrinsic_checking                  | 5.99µs    | 0.000           | 2.91ms   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| extern_mod_stmt_cnum                             | 5.98µs    | 0.000           | 5.98µs   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| cgu_partitioning                                 | 5.85µs    | 0.000           | 1.38ms   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| item_types_checking                              | 5.83µs    | 0.000           | 133.80s  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_extra_filename             | 5.60µs    | 0.000           | 5.60µs   | 15         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| unsafety_checking                                | 5.39µs    | 0.000           | 5.39µs   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| item_bodies_checking                             | 5.36µs    | 0.000           | 30.84µs  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| is_late_bound_map                                | 5.22µs    | 0.000           | 5.22µs   | 2          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| backend_optimization_level                       | 5.04µs    | 0.000           | 5.04µs   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_is_panic_runtime           | 4.91µs    | 0.000           | 4.91µs   | 15         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| impl_wf_inference                                | 4.89µs    | 0.000           | 11.28µs  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| trait_of_item                                    | 4.69µs    | 0.000           | 6.17µs   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| recursion_limit                                  | 4.58µs    | 0.000           | 4.58µs   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| lint_checking                                    | 4.53µs    | 0.000           | 6.34ms   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| crate_inherent_impls_overlap_check               | 4.52µs    | 0.000           | 4.52µs   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_original_crate_name        | 4.52µs    | 0.000           | 4.52µs   | 15         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| maybe_create_a_macro_crate                       | 4.45µs    | 0.000           | 4.45µs   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| monomorphization_collector                       | 4.43µs    | 0.000           | 17.42µs  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| cgu_partitioning_place_inline_items              | 4.27µs    | 0.000           | 4.27µs   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| MIR_borrow_checking                              | 4.13µs    | 0.000           | 4.13µs   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| attributes_injection                             | 4.11µs    | 0.000           | 4.11µs   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| resolve_crate                                    | 4.09µs    | 0.000           | 12.60ms  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_crate_name                 | 3.66µs    | 0.000           | 3.66µs   | 15         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| LLVM_module_optimize_function_passes             | 3.51µs    | 0.000           | 3.51µs   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| plugin_loading                                   | 3.19µs    | 0.000           | 3.19µs   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_crate_disambiguator        | 3.17µs    | 0.000           | 3.17µs   | 15         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_crate_hash                 | 3.09µs    | 0.000           | 3.09µs   | 15         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_dep_kind                   | 3.03µs    | 0.000           | 3.03µs   | 15         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_crate_host_hash            | 2.91µs    | 0.000           | 2.91µs   | 15         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| resolve_report_errors                            | 2.74µs    | 0.000           | 2.74µs   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| maybe_building_test_harness                      | 2.47µs    | 0.000           | 2.47µs   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| misc_checking_2                                  | 2.37µs    | 0.000           | 5.16ms   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| orphan_checking                                  | 2.28µs    | 0.000           | 2.28µs   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| named_region_map                                 | 2.07µs    | 0.000           | 2.07µs   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| has_panic_handler                                | 1.79µs    | 0.000           | 1.79µs   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| maybe_unused_trait_import                        | 1.65µs    | 0.000           | 1.65µs   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_trait_of_item              | 1.48µs    | 0.000           | 1.48µs   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_is_compiler_builtins       | 1.32µs    | 0.000           | 1.32µs   | 15         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_is_no_builtins             | 1.30µs    | 0.000           | 1.30µs   | 15         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_is_profiler_runtime        | 1.28µs    | 0.000           | 1.28µs   | 15         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| proc_macro_decls_static                          | 1.04µs    | 0.000           | 1.04µs   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| looking_for_derive_registrar                     | 794.00ns  | 0.000           | 1.83µs   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| assert_dep_graph                                 | 725.00ns  | 0.000           | 725.00ns | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| check_unused_macros                              | 594.00ns  | 0.000           | 594.00ns | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| Item                                             | Self time | % of total time | Time     | Item count |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| mir_borrowck                                     | 76.89s    | 33.794          | 288.22s  | 32         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| check_mod_privacy                                | 60.46s    | 26.574          | 60.46s   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| type_op_prove_predicate                          | 27.68s    | 12.164          | 27.68s   | 260        |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| normalize_generic_arg_after_erasing_regions      | 24.58s    | 10.802          | 24.58s   | 135        |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| typeck                                           | 13.79s    | 6.062           | 13.84s   | 32         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
:...skipping...
+--------------------------------------------------+-----------+-----------------+----------+------------+
| Item                                             | Self time | % of total time | Time     | Item count |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| mir_borrowck                                     | 76.89s    | 33.794          | 288.22s  | 32         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| check_mod_privacy                                | 60.46s    | 26.574          | 60.46s   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| type_op_prove_predicate                          | 27.68s    | 12.164          | 27.68s   | 260        |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| normalize_generic_arg_after_erasing_regions      | 24.58s    | 10.802          | 24.58s   | 135        |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| typeck                                           | 13.79s    | 6.062           | 13.84s   | 32         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| normalize_projection_ty                          | 5.46s     | 2.402           | 5.46s    | 17         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| evaluate_obligation                              | 5.35s     | 2.351           | 5.36s    | 330        |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| privacy_access_levels                            | 5.04s     | 2.216           | 5.04s    | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| check_mod_item_types                             | 4.56s     | 2.006           | 133.80s  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| optimized_mir                                    | 3.45s     | 1.517           | 36.20s   | 32         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| expand_crate                                     | 19.92ms   | 0.009           | 42.49ms  | 1          |
:...skipping...
+--------------------------------------------------+-----------+-----------------+----------+------------+
| Item                                             | Self time | % of total time | Time     | Item count |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| mir_borrowck                                     | 76.89s    | 33.794          | 288.22s  | 32         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| check_mod_privacy                                | 60.46s    | 26.574          | 60.46s   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| type_op_prove_predicate                          | 27.68s    | 12.164          | 27.68s   | 260        |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| normalize_generic_arg_after_erasing_regions      | 24.58s    | 10.802          | 24.58s   | 135        |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| typeck                                           | 13.79s    | 6.062           | 13.84s   | 32         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| normalize_projection_ty                          | 5.46s     | 2.402           | 5.46s    | 17         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| evaluate_obligation                              | 5.35s     | 2.351           | 5.36s    | 330        |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| privacy_access_levels                            | 5.04s     | 2.216           | 5.04s    | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| check_mod_item_types                             | 4.56s     | 2.006           | 133.80s  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
+--------------------------------------------------+-----------+-----------------+----------+------------+
| Item                                             | Self time | % of total time | Time     | Item count |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| mir_borrowck                                     | 76.89s    | 33.794          | 288.22s  | 32         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| check_mod_privacy                                | 60.46s    | 26.574          | 60.46s   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| type_op_prove_predicate                          | 27.68s    | 12.164          | 27.68s   | 260        |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| normalize_generic_arg_after_erasing_regions      | 24.58s    | 10.802          | 24.58s   | 135        |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| typeck                                           | 13.79s    | 6.062           | 13.84s   | 32         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| normalize_projection_ty                          | 5.46s     | 2.402           | 5.46s    | 17         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| evaluate_obligation                              | 5.35s     | 2.351           | 5.36s    | 330        |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| privacy_access_levels                            | 5.04s     | 2.216           | 5.04s    | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| check_mod_item_types                             | 4.56s     | 2.006           | 133.80s  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| optimized_mir                                    | 3.45s     | 1.517           | 36.20s   | 32         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| expand_crate                                     | 19.92ms   | 0.009           | 42.49ms  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_register_crate                          | 18.63ms   | 0.008           | 22.47ms  | 15         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| LLVM_passes                                      | 14.13ms   | 0.006           | 14.13ms  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| LLVM_module_codegen_emit_obj                     | 11.34ms   | 0.005           | 11.34ms  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_impl_trait_ref             | 10.97ms   | 0.005           | 20.36ms  | 124        |
...skipping...
| named_region_map                                 | 2.07µs    | 0.000           | 2.07µs   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| has_panic_handler                                | 1.79µs    | 0.000           | 1.79µs   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| maybe_unused_trait_import                        | 1.65µs    | 0.000           | 1.65µs   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_trait_of_item              | 1.48µs    | 0.000           | 1.48µs   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_is_compiler_builtins       | 1.32µs    | 0.000           | 1.32µs   | 15         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_is_no_builtins             | 1.30µs    | 0.000           | 1.30µs   | 15         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| metadata_decode_entry_is_profiler_runtime        | 1.28µs    | 0.000           | 1.28µs   | 15         |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| proc_macro_decls_static                          | 1.04µs    | 0.000           | 1.04µs   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| looking_for_derive_registrar                     | 794.00ns  | 0.000           | 1.83µs   | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| assert_dep_graph                                 | 725.00ns  | 0.000           | 725.00ns | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| check_unused_macros                              | 594.00ns  | 0.000           | 594.00ns | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| monomorphization_collector_graph_walk            | 417.00ns  | 0.000           | 417.00ns | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| cgu_partitioning_internalize_symbols             | 296.00ns  | 0.000           | 296.00ns | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| llvm_dump_timing_file                            | 173.00ns  | 0.000           | 173.00ns | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| incr_comp_query_cache_promotion                  | 165.00ns  | 0.000           | 165.00ns | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
| plugin_registration                              | 82.00ns   | 0.000           | 82.00ns  | 1          |
+--------------------------------------------------+-----------+-----------------+----------+------------+
Total cpu time: 227.524518269s

@hameerabbasi
Copy link
Contributor

Bisected (almost certainly introduced with the original await PR), when this first compiled.

********************************************************************************
Regression in nightly-2019-05-09
********************************************************************************

fetching https://static.rust-lang.org/dist/2019-05-08/channel-rust-nightly-git-commit-hash.txt
nightly manifest 2019-05-08: 40 B / 40 B [===============] 100.00 % 652.99 KB/s converted 2019-05-08 to cfdc84a009020c59e53e4039beae22eb59e41685
fetching https://static.rust-lang.org/dist/2019-05-09/channel-rust-nightly-git-commit-hash.txt
nightly manifest 2019-05-09: 40 B / 40 B [===============] 100.00 % 683.02 KB/s converted 2019-05-09 to 3f5152e200c0c02dfe0f79367948c98053d35855
looking for regression commit between 2019-05-08 and 2019-05-09
opening existing repository at "rust.git"
refreshing repository
fetching (via local git) commits from cfdc84a009020c59e53e4039beae22eb59e41685 to 3f5152e200c0c02dfe0f79367948c98053d35855
opening existing repository at "rust.git"
refreshing repository
looking up first commit
looking up second commit
checking that commits are by bors and thus have ci artifacts...
finding bors merge commits
found 6 bors merge commits in the specified range
  commit[0] 2019-05-07UTC: Auto merge of #60612 - Centril:rollup-61drhqt, r=Centril
  commit[1] 2019-05-07UTC: Auto merge of #60586 - cramertj:await, r=oli-obk
  commit[2] 2019-05-08UTC: Auto merge of #60378 - froydnj:apple-target-modifications, r=michaelwoerister
  commit[3] 2019-05-08UTC: Auto merge of #60246 - Zoxc:hir-map-vec, r=eddyb
  commit[4] 2019-05-08UTC: Auto merge of #60626 - matthiaskrgr:submodule_upd, r=oli-obk
  commit[5] 2019-05-08UTC: Auto merge of #60402 - michaelwoerister:update-profiler-rt-build, r=alexcrichton
ERROR: no commits between cfdc84a009020c59e53e4039beae22eb59e41685 and 3f5152e200c0c02dfe0f79367948c98053d35855 within last 167 days

@JohnTitor
Copy link
Member

Assigning P-medium as discussed as part of the Prioritization Working Group procedure and removing I-prioritize.

@JohnTitor JohnTitor added P-medium Medium priority and removed I-prioritize Issue: Indicates that prioritization has been requested for this issue. labels Mar 16, 2021
@tmandry tmandry added the AsyncAwait-Triaged Async-await issues that have been triaged during a working group meeting. label Mar 19, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-async-await Area: Async & Await A-closures Area: closures (`|args| { .. }`) AsyncAwait-Triaged Async-await issues that have been triaged during a working group meeting. C-bug Category: This is a bug. I-compiletime Issue: Problems and improvements with respect to compile times. P-medium Medium priority T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.
Projects
None yet
Development

No branches or pull requests

5 participants