about summary refs log tree commit diff
path: root/compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2020-12-26 00:11:30 +0000
committerbors <bors@rust-lang.org>2020-12-26 00:11:30 +0000
commit931aa27922b521d89d472f385882b921d3f8d624 (patch)
tree10ca7bab3c5025b87f66fce201f2bc27303892f1 /compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp
parent1d2730f413dd9ba67b89dd4c8f65e9331a10471b (diff)
parent2e92b13a606ba2f073c789dfd6c33f889f04c8cf (diff)
downloadrust-931aa27922b521d89d472f385882b921d3f8d624.tar.gz
rust-931aa27922b521d89d472f385882b921d3f8d624.zip
Auto merge of #80246 - matthewjasper:projection-cycle-caching, r=Mark-Simulacrum
Prevent caching normalization results with a cycle

When normalizing a projection which results in a cycle, we would cache the result of `project_type` without the nested obligations (because they're not needed for inference). This would result in the nested obligations only being handled once in fulfill, which would avoid the cycle error. `get_paranoid_cache_value_obligation` used to add an obligation that resulted in a cycle in this case previously, but was removed by #73905.

This PR makes the projection cache not cache the value of a projection if it was ever normalized in a cycle (except in a snapshot that's rolled back).

Fixes #79714.

r? `@nikomatsakis`
Diffstat (limited to 'compiler/rustc_llvm/llvm-wrapper/RustWrapper.cpp')
0 files changed, 0 insertions, 0 deletions