about summary refs log tree commit diff
path: root/compiler/rustc_parse/src/parser/expr.rs
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2023-09-29 02:09:40 +0000
committerbors <bors@rust-lang.org>2023-09-29 02:09:40 +0000
commit60bb5192d169d301db9be08141d852592142d3b3 (patch)
tree598f247c46db611fbc6309c7ba92377e5fc5c985 /compiler/rustc_parse/src/parser/expr.rs
parent958c2b87d896063de2ce405db08e40bc0bcd8cb8 (diff)
parente8b8ddd17e93875b6536224c598790117d4c929e (diff)
downloadrust-60bb5192d169d301db9be08141d852592142d3b3.tar.gz
rust-60bb5192d169d301db9be08141d852592142d3b3.zip
Auto merge of #115843 - lcnr:bb-provisional-cache, r=compiler-errors
new solver: remove provisional cache

The provisional cache is a performance optimization if there are large, interleaving cycles. Such cycles generally do not exist. It is incredibly complex and unsound in all trait solvers which have one: the old solver, chalk, and the new solver ([link](https://github.com/rust-lang/rust/blob/master/tests/ui/traits/new-solver/cycles/inductive-not-on-stack.rs)).

Given the assumption that it is not perf-critical and also incredibly complex, remove it from the new solver, only checking whether a goal is on the stack. While writing this, I uncovered two additional soundness bugs, see the inline comments for them.

r? `@compiler-errors`
Diffstat (limited to 'compiler/rustc_parse/src/parser/expr.rs')
0 files changed, 0 insertions, 0 deletions