about summary refs log tree commit diff
path: root/compiler/rustc_codegen_llvm/src/attributes.rs
diff options
context:
space:
mode:
authorAaron Hill <aa1ronham@gmail.com>2021-10-09 11:29:39 -0500
committerAaron Hill <aa1ronham@gmail.com>2021-12-18 19:07:14 -0500
commit40ef1d322304c8a21c675fd32886fb27ebe07039 (patch)
tree5de99867c9d6f072ce6b4896aca2613daf6362f5 /compiler/rustc_codegen_llvm/src/attributes.rs
parent91a0600a5c22b9d159e3c57526af83e71d1120f8 (diff)
downloadrust-40ef1d322304c8a21c675fd32886fb27ebe07039.tar.gz
rust-40ef1d322304c8a21c675fd32886fb27ebe07039.zip
Re-introduce concept of projection cache 'completion'
Instead of clearing out the cache entirely, we store
the intermediate evaluation result into the cache entry.
This accomplishes several things:

* We avoid the performance hit associated with re-evaluating
  the sub-obligations
* We avoid causing issues with incremental compilation, since
  the final evaluation result is always the same
* We avoid affecting other uses of the same `InferCtxt` which
  might care about 'side effects' from processing the sub-obligations
  (e,g. region constraints). Only code that is specifically aware
   of the new 'complete' code is affected
Diffstat (limited to 'compiler/rustc_codegen_llvm/src/attributes.rs')
0 files changed, 0 insertions, 0 deletions