]> git.lizzy.rs Git - rust.git/commit - src/tools/miri
Auto merge of #101615 - compiler-errors:rpitit-perf, r=oli-obk
authorbors <bors@rust-lang.org>
Tue, 13 Sep 2022 15:33:06 +0000 (15:33 +0000)
committerbors <bors@rust-lang.org>
Tue, 13 Sep 2022 15:33:06 +0000 (15:33 +0000)
commit1ce51982b8550c782ded466c1abff0d2b2e21c4e
tree597e3ad33ce315008a6a4579da540eb46ef39ab7
parent5338f5f1d4ad9c99706e5cb691f8d5bbac341262
parentbec079d1a9fe1a9163a0143ff9e1281b4eb09ec9
Auto merge of #101615 - compiler-errors:rpitit-perf, r=oli-obk

Make `compare_predicate_entailment` no longer a query

Make `compare_predicate_entailment` so it's no longer a query (again), and splits out the new logic (that equates the return types to infer RPITITs) into its own query. This means that this new query (now called `collect_trait_impl_trait_tys`) is no longer executed for non-RPITIT cases.

This should improve perf (https://github.com/rust-lang/rust/pull/101224#issuecomment-1241682203), though in practice we see that these some crates remain from the primary regressions list on the original report... They are all <= 0.43% regression and seemingly only on the incr-full scenario for all of them.

I am at a loss for what might be causing this regression other than what I fixed here, since we don't introduce much new non-RPITIT logic except for some `def_kind` query calls in some places, for example, like projection. Maybe that's it?

----

Originally this PR was opened to test enabling `cache_on_disk` (62164aaaa11) but that didn't turn out to be very useful (https://github.com/rust-lang/rust/pull/101615#issuecomment-1242403205), so that led me to just split the query (and rename the PR).
compiler/rustc_infer/src/infer/error_reporting/mod.rs
compiler/rustc_middle/src/query/mod.rs
compiler/rustc_typeck/src/check/compare_method.rs