Rollup of 7 pull requests#153846
Conversation
If an edge uses some not-yet-known node, we just leave the node's data empty, that data can be added later. Use this support to avoid skipping edges in DepGraphQuery
Moving the macro and its expansion into the same physical file resolves a lot of tension in the current module arrangement. Code in the macro is now free to use plain imports in the same file, and there is no longer any question of whether `mod query_impl` should be declared inside the macro, or surrounding a separate expansion site.
LinkedGraph: support adding nodes and edges in arbitrary order If an edge uses some not-yet-known node, we just leave the node's data empty, that data can be added later. Use this support to avoid skipping edges in RetainedDepGraph. This is continuation of rust-lang#152590, that PR just fixes the ICE, this PR also preserves all the edges in debug dumps. This is also a minimized version of rust-lang#151821 with a smaller amount of data structure hacks.
…cote Replace `visit_waiters` with `abstracted_waiters_of` This replaces `visit_waiters` which uses closures to visit waiters with `abstracted_waiters_of` which returns a list of waiters. This makes the control flow of their users a bit clearer. Additionally `abstracted_waiters_of` includes non-query waiters unlike `visit_waiters`. This means that `connected_to_root` now considers resumable waiters from the compiler root as being connected to root, while previously only non-resumable waiters counted. This can result in some additional entry points being found. Similarly in the loop detecting entry points we now consider queries in the cycle with direct resumable waiters from the compiler root as being entry points. When looking for entry points we now look at waiters until we found a query to populate the `EntryPoint.waiter` field instead of stopping when we determined it to be an entry point. cc @petrochenkov @nnethercote
Move and expand the big `rustc_query_impl` macro into a physical `query_impl.rs` While looking through rust-lang#153588, I came up with a related but different change that I think resolves a lot of tension in the current module arrangement. The core idea is that if we both define and expand the big macro in the same physical module `rustc_query_impl::query_impl`, then we no longer need to worry about where `mod query_impl` should be declared, or where its imports should go, because those questions now have simple and obvious answers. The second commit follows up with some more changes inspired by rust-lang#153588. Those particular follow-ups are not essential to the main idea of this PR. r? nnethercote
Reimplement const closures Tracking issue: rust-lang#106003 Best reviewed commit-by-commit The old solver can't handle `for<'a> |x: &'a()| ()` closures in const contexts, but that feature is unstable itself, so we can just leave it to the next solver to handle. We need a lot more tests, we're testing the bare minimum of success and failure paths right now. r? @fee1-dead
…r=WaffleLapkin Fix std doctest build for SGX target. This PR fixes standard library doctest build for `x86_64-fortanix-unknown-sgx` target.
…nnethercote Remove `value_from_cycle_error` specializations This removes `value_from_cycle_error` specializations which are not involved in custom cycle error handling. This is a step towards removing query cycle recovery.
delete some duplicated tests Delete some tests which have almost-exact duplicates (only difference is formatting or the concrete integer values used) in the `tests/ui/moves` directory.
This comment has been minimized.
This comment has been minimized.
Rollup of 7 pull requests Successful merges: - #152621 (LinkedGraph: support adding nodes and edges in arbitrary order) - #153376 (Replace `visit_waiters` with `abstracted_waiters_of`) - #153760 (Move and expand the big `rustc_query_impl` macro into a physical `query_impl.rs`) - #153818 (Reimplement const closures) - #153774 (Fix std doctest build for SGX target.) - #153786 (Remove `value_from_cycle_error` specializations) - #153819 (delete some duplicated tests)
|
💔 Test for e38a4b6 failed: CI. Failed job:
|
|
Failure looks strange; possibly bogus? @bors retry |
|
A job failed! Check out the build log: (web) (plain enhanced) (plain) Click to see the possible cause of the failure (guessed by this bot) |
This comment has been minimized.
This comment has been minimized.
What is this?This is an experimental post-merge analysis report that shows differences in test outcomes between the merged PR and its parent PR.Comparing a0e206b (parent) -> 620e36a (this PR) Test differencesShow 42 test diffsStage 1
Stage 2
Additionally, 16 doctest diffs were found. These are ignored, as they are noisy. Job group index
Test dashboardRun cargo run --manifest-path src/ci/citool/Cargo.toml -- \
test-dashboard 620e36a8d1fc2f9e5694ce83c2631877651a962c --output-dir test-dashboardAnd then open Job duration changes
How to interpret the job duration changes?Job durations can vary a lot, based on the actual runner instance |
|
Finished benchmarking commit (620e36a): comparison URL. Overall result: no relevant changes - no action needed@rustbot label: -perf-regression Instruction countThis benchmark run did not return any relevant results for this metric. Max RSS (memory usage)Results (primary -2.1%)A less reliable metric. May be of interest, but not used to determine the overall result above.
CyclesThis benchmark run did not return any relevant results for this metric. Binary sizeThis benchmark run did not return any relevant results for this metric. Bootstrap: 481.291s -> 483.729s (0.51%) |
Successful merges:
visit_waiterswithabstracted_waiters_of#153376 (Replacevisit_waiterswithabstracted_waiters_of)rustc_query_implmacro into a physicalquery_impl.rs#153760 (Move and expand the bigrustc_query_implmacro into a physicalquery_impl.rs)value_from_cycle_errorspecializations #153786 (Removevalue_from_cycle_errorspecializations)r? @ghost
Create a similar rollup