about summary refs log tree commit diff
path: root/src/rustllvm/RustWrapper.cpp
diff options
context:
space:
mode:
authorNiko Matsakis <niko@alum.mit.edu>2017-09-02 08:35:07 -0400
committerNiko Matsakis <niko@alum.mit.edu>2017-09-02 08:35:48 -0400
commit80447c38aaf680f15c5bd37e154fb0bf01b68573 (patch)
tree999a7c069519728a1b49268d5975af4372da46f4 /src/rustllvm/RustWrapper.cpp
parented532c0d933aaae45e6804efc5936bea078bbaad (diff)
downloadrust-80447c38aaf680f15c5bd37e154fb0bf01b68573.tar.gz
rust-80447c38aaf680f15c5bd37e154fb0bf01b68573.zip
limit and clear cache obligations opportunistically
Keep **all** the obligations for every projection is wasteful of
memory and compilation time. We only really care about those
subobligations that may inform the result of the projection (i.e., may
help to resolve any inference variables that appear within).
Therefore, we can clear the subobligations from the cache that don't
potentially affect the result of the projection. On every cache hit,
we also take the opportunity to check if the type variables have been
resolved *yet* and, if so, clear out the pending obligations.

Fixes #43613
Diffstat (limited to 'src/rustllvm/RustWrapper.cpp')
0 files changed, 0 insertions, 0 deletions