| Age | Commit message (Collapse) | Author | Lines |
|
|
|
r=michaelwoerister
Add more profiler events
- Adds Start\Stop events for time spent loading incremental query results from disk.
- Adds Start\Stop events for time spent blocked waiting for queries to complete (when parallel queries are enabled).
r? @michaelwoerister
|
|
Fix #54242
r? @michaelwoerister
|
|
Rename rustc_errors dependency in rust 2018 crates
I think this is a better solution than `use rustc_errors as errors` in `lib.rs` and `use crate::errors` in modules.
Related: rust-lang/cargo#5653
cc #58099
r? @Centril
|
|
|
|
|
|
|
|
This captures time spent blocked when a query is waiting for another
query to finish executing in another thread.
|
|
|
|
|
|
Implement more detailed self profiling
Timing data and cache hits/misses are now recorded at the query level.
This allows us to show detailed per query information such as total time
for each query.
To see detailed query information in the summary pass the `-Z verbose`
flag. For example:
```
rustc -Z self-profile -Z verbose hello_world.rs
```
results in something like:
```md
Self profiling results:
| Phase | Time (ms) | Time (%) | Queries | Hits (%)
| ----------------------------------------- | -------------- | -------- | -------------- | --------
| Other | 177 | 54.97 | 8094 | 45.47
| - {time spent not running queries} | 113 | 35.09 | 0 | 0.00
| - const_eval | 16 | 4.97 | 26 | 11.54
| - type_of | 9 | 2.80 | 627 | 27.75
| - const_eval_raw | 8 | 2.48 | 22 | 0.00
| - adt_def | 7 | 2.17 | 381 | 11.55
| - visible_parent_map | 7 | 2.17 | 99 | 98.99
| - item_attrs | 6 | 1.86 | 698 | 50.14
| - item_children | 5 | 1.55 | 2815 | 0.00
| - adt_dtorck_constraint | 4 | 1.24 | 2 | 0.00
| - adt_destructor | 2 | 0.62 | 15 | 86.67
| TypeChecking | 53 | 16.46 | 2834 | 79.89
| - trait_impls_of | 9 | 2.80 | 65 | 86.15
| - evaluate_obligation | 7 | 2.17 | 80 | 2.50
| - const_is_rvalue_promotable_to_static | 6 | 1.86 | 1 | 0.00
| - is_copy_raw | 6 | 1.86 | 29 | 58.62
| - rvalue_promotable_map | 6 | 1.86 | 2 | 50.00
| - {time spent not running queries} | 6 | 1.86 | 0 | 0.00
| - typeck_item_bodies | 5 | 1.55 | 1 | 0.00
| - typeck_tables_of | 5 | 1.55 | 19 | 94.74
| - dropck_outlives | 2 | 0.62 | 1 | 0.00
| - layout_raw | 1 | 0.31 | 668 | 87.87
| Linking | 48 | 14.91 | 43 | 46.51
| - {time spent not running queries} | 48 | 14.91 | 0 | 0.00
| Codegen | 29 | 9.01 | 420 | 61.90
| - {time spent not running queries} | 16 | 4.97 | 0 | 0.00
| - collect_and_partition_mono_items | 11 | 3.42 | 13 | 92.31
| - mir_const | 1 | 0.31 | 1 | 0.00
| - mir_validated | 1 | 0.31 | 3 | 66.67
| Expansion | 14 | 4.35 | 0 | 0.00
| - {time spent not running queries} | 14 | 4.35 | 0 | 0.00
| BorrowChecking | 1 | 0.31 | 12 | 41.67
| - borrowck | 1 | 0.31 | 2 | 50.00
| Parsing | 0 | 0.00 | 0 | 0.00
Optimization level: No
Incremental: off
```
<details>
<summary>Rendered</summary>
Self profiling results:
| Phase | Time (ms) | Time (%) | Queries | Hits (%)
| ----------------------------------------- | -------------- | -------- | -------------- | --------
| **Other** | **177** | **54.97** | **8094** | **45.47**
| - {time spent not running queries} | 113 | 35.09 | 0 | 0.00
| - const_eval | 16 | 4.97 | 26 | 11.54
| - type_of | 9 | 2.80 | 627 | 27.75
| - const_eval_raw | 8 | 2.48 | 22 | 0.00
| - adt_def | 7 | 2.17 | 381 | 11.55
| - visible_parent_map | 7 | 2.17 | 99 | 98.99
| - item_attrs | 6 | 1.86 | 698 | 50.14
| - item_children | 5 | 1.55 | 2815 | 0.00
| - adt_dtorck_constraint | 4 | 1.24 | 2 | 0.00
| - adt_destructor | 2 | 0.62 | 15 | 86.67
| TypeChecking | 53 | 16.46 | 2834 | 79.89
| - trait_impls_of | 9 | 2.80 | 65 | 86.15
| - evaluate_obligation | 7 | 2.17 | 80 | 2.50
| - const_is_rvalue_promotable_to_static | 6 | 1.86 | 1 | 0.00
| - is_copy_raw | 6 | 1.86 | 29 | 58.62
| - rvalue_promotable_map | 6 | 1.86 | 2 | 50.00
| - {time spent not running queries} | 6 | 1.86 | 0 | 0.00
| - typeck_item_bodies | 5 | 1.55 | 1 | 0.00
| - typeck_tables_of | 5 | 1.55 | 19 | 94.74
| - dropck_outlives | 2 | 0.62 | 1 | 0.00
| - layout_raw | 1 | 0.31 | 668 | 87.87
| Linking | 48 | 14.91 | 43 | 46.51
| - {time spent not running queries} | 48 | 14.91 | 0 | 0.00
| Codegen | 29 | 9.01 | 420 | 61.90
| - {time spent not running queries} | 16 | 4.97 | 0 | 0.00
| - collect_and_partition_mono_items | 11 | 3.42 | 13 | 92.31
| - mir_const | 1 | 0.31 | 1 | 0.00
| - mir_validated | 1 | 0.31 | 3 | 66.67
| Expansion | 14 | 4.35 | 0 | 0.00
| - {time spent not running queries} | 14 | 4.35 | 0 | 0.00
| BorrowChecking | 1 | 0.31 | 12 | 41.67
| - borrowck | 1 | 0.31 | 2 | 50.00
| Parsing | 0 | 0.00 | 0 | 0.00
Optimization level: No
Incremental: off
</details>
cc @nikomatsakis @michaelwoerister @Zoxc
Fixes #54141
|
|
|
|
|
|
|
|
|
|
|
|
Timing data and cache hits/misses are now recorded at the query level.
This allows us to show detailed per query information such as total time
for each query.
To see detailed query information in the summary pass the `-Z verbose`
flag. For example:
```
rustc -Z self-profile -Z verbose hello_world.rs
```
|
|
|
|
|
|
|
|
|
|
|
|
Implement optimize(size) and optimize(speed) attributes
This PR implements both `optimize(size)` and `optimize(speed)` attributes.
While the functionality itself works fine now, this PR is not yet complete: the code might be messy in places and, most importantly, the compiletest must be improved with functionality to run tests with custom optimization levels. Otherwise the new attribute cannot be tested properly. Oh, and not all of the RFC is implemented – attribute propagation is not implemented for example.
# TODO
* [x] Improve compiletest so that tests can be written;
* [x] Assign a proper error number (E9999 currently, no idea how to allocate a number properly);
* [ ] Perhaps reduce the duplication in LLVM attribute assignment code…
|
|
Update/remove some old readmes
r? @nikomatsakis
cc #48478
There are a bunch of READMEs with content that I would like to see a final decision made on:
- https://github.com/rust-lang/rust/tree/master/src/librustc/ty/query
- https://github.com/rust-lang/rust/tree/master/src/librustc/dep_graph
- https://github.com/rust-lang/rust/blob/master/src/librustc/infer/region_constraints
- https://github.com/rust-lang/rust/tree/master/src/librustc/infer/higher_ranked
- https://github.com/rust-lang/rust/tree/master/src/librustc/infer/lexical_region_resolve
- https://github.com/rust-lang/rust/blob/master/src/librustc_borrowck/borrowck
It's not clear how useful or obsolete any of these are. I would really appreciate if the appropriate domain experts for each of these could respond with one of (a) delete it, (b) wait for system to be remove, or (c) move it to rustc-guide. @nikomatsakis do you know who to ping for any of these (sorry, I suspect many of them are you)?
|
|
|
|
Rollup of 10 pull requests
Successful merges:
- #57268 (Add a target option "merge-functions", and a corresponding -Z flag (works around #57356))
- #57476 (Move glob map use to query and get rid of CrateAnalysis)
- #57501 (High priority resolutions for associated variants)
- #57573 (Querify `entry_fn`)
- #57610 (Fix nested `?` matchers)
- #57634 (Remove an unused function argument)
- #57653 (Make the contribution doc reference the guide more)
- #57666 (Generalize `huge-enum.rs` test and expected stderr for more cross platform cases)
- #57698 (Fix typo bug in DepGraph::try_mark_green().)
- #57746 (Update README.md)
Failed merges:
r? @ghost
|
|
Querify `entry_fn`
Analogous to https://github.com/rust-lang/rust/pull/57570 but this will also require few fixups in Miri so I decided to separate that (and it seems [CI doesn't let us break tools anymore](https://github.com/rust-lang/rust/pull/57392#issuecomment-453801540)? Or was that because it was a rollup PR?)
r? @nikomatsakis
|
|
Move glob map use to query and get rid of CrateAnalysis
~Also includes commits from ~https://github.com/rust-lang/rust/pull/57392~ and ~https://github.com/rust-lang/rust/pull/57436~.~
With glob map calculated unconditionally in https://github.com/rust-lang/rust/pull/57392, this PR moves the calculated glob map to `GlobalCtxt` and exposes a relevant query (as we do with other queries which copy precomputed data over from the `Resolver`).
This allows us to get rid of the `CrateAnalysis` struct in an attempt to simplify the compiler interface.
cc @Zoxc
r? @nikomatsakis @Zoxc @petrochenkov
|
|
Make privacy checking, intrinsic checking and liveness checking incremental
Blocked on https://github.com/rust-lang/rust/pull/51487
r? @michaelwoerister
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Clean up and fix a bug in query plumbing
r? @michaelwoerister
|
|
Rollup of 4 pull requests
Successful merges:
- #56874 (Simplify foreign type rendering.)
- #57113 (Move diagnostics out from QueryJob and optimize for the case with no diagnostics)
- #57366 (Point at match discriminant on type error in match arm pattern)
- #57538 (librustc_mir: Fix ICE with slice patterns)
Failed merges:
- #57381 (Tweak output of type mismatch between "then" and `else` `if` arms)
r? @ghost
|
|
|
|
|
|
|
|
Clean up and optimize OpenTask / read_index
r? @michaelwoerister
|
|
|
|
|
|
Fix 'be be' constructs
I noticed a duplicated "be" somewhere in the code. A search for it
manifested a couple more locations with the same problem. This change
removes one of the "be"s.
|
|
Add support for trait-objects without a principal
The hard-error version of #56481 - should be merged after we do something about the `traitobject` crate.
Fixes #33140.
Fixes #57057.
r? @nikomatsakis
|
|
Don't emit `Unevaluated` from `const_eval`
cc @eddyb @RalfJung
|
|
|
|
I noticed a duplicated "be" somewhere in the code. A search for it
manifested a couple more locations with the same problem. This change
removes one of the "be"s.
|
|
|
|
|