-
Notifications
You must be signed in to change notification settings - Fork 12.7k
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
use global cache when computing proof trees #117394
Conversation
Some changes occurred to the core trait solver cc @rust-lang/initiative-trait-system-refactor |
Wait, does this mean we compute the full proof tree every time we evaluate an obligation? Haven't looked too closely at the code, but if so, this seems kinda inefficient? We should perhaps run another perf run with Ztrait-solver=next-coherence if so |
no, we ignore (and then overwrite) the cache entry if it was previously computed without generating the proof tree. However, when generating proof trees, we do put the tree in the cache as well. |
ah, that seems less bad, idc about that one |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
r=me, please amend commit with additional comment.
a04e81e
to
15ae59b
Compare
@bors r=compiler-errors rollup |
…iaskrgr Rollup of 4 pull requests Successful merges: - rust-lang#117394 (use global cache when computing proof trees) - rust-lang#117495 (Clarify `Unsize` documentation) - rust-lang#117509 (Remove support for alias `-Z symbol-mangling-version`) - rust-lang#117512 (Expand mem::offset_of! docs) r? `@ghost` `@rustbot` modify labels: rollup
Rollup merge of rust-lang#117394 - lcnr:proof-tree-cache4, r=compiler-errors use global cache when computing proof trees we're writing the solver while relying on the existence of the global cache to avoid exponential blowup. By disabling the global cache when building proof trees, it is easy to get hangs, e.g. when computing intercrate ambiguity causes. Removes the unstable `-Zdump_solver_proof_tree_use_cache` option, as we now always return a full proof tree. r? `@compiler-errors`
82: Automated pull from upstream `master` r=tshepang a=github-actions[bot] This PR pulls the following changes from the upstream repository: * rust-lang/rust#117313 * rust-lang/rust#117131 * rust-lang/rust#117134 * rust-lang/rust#117471 * rust-lang/rust#117521 * rust-lang/rust#117513 * rust-lang/rust#117512 * rust-lang/rust#117509 * rust-lang/rust#117495 * rust-lang/rust#117394 * rust-lang/rust#117466 * rust-lang/rust#117204 * rust-lang/rust#117386 * rust-lang/rust#117506 Co-authored-by: Nicholas Nethercote <[email protected]> Co-authored-by: roblabla <[email protected]> Co-authored-by: Michael Goulet <[email protected]> Co-authored-by: massivebird <[email protected]> Co-authored-by: bors <[email protected]> Co-authored-by: Zalathar <[email protected]> Co-authored-by: lcnr <[email protected]> Co-authored-by: Joshua Liebow-Feeser <[email protected]> Co-authored-by: Matthias Krüger <[email protected]>
we're writing the solver while relying on the existence of the global cache to avoid exponential blowup. By disabling the global cache when building proof trees, it is easy to get hangs, e.g. when computing intercrate ambiguity causes.
Removes the unstable
-Zdump_solver_proof_tree_use_cache
option, as we now always return a full proof tree.r? @compiler-errors