about summary refs log tree commit diff
path: root/src/rustllvm/PassWrapper.cpp
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2018-06-28 01:41:40 +0000
committerbors <bors@rust-lang.org>2018-06-28 01:41:40 +0000
commit99a9d6806d355b69fa66621df5208342de823aea (patch)
treee4af5719bab719a6e8c15a84b0e055554b3bcbe4 /src/rustllvm/PassWrapper.cpp
parent266afeb17c993f83d01d8129e97981a57bb442e0 (diff)
parent1523de34a2267b624f1b920c1b4496568bd8c16b (diff)
downloadrust-99a9d6806d355b69fa66621df5208342de823aea.tar.gz
rust-99a9d6806d355b69fa66621df5208342de823aea.zip
Auto merge of #51538 - nikomatsakis:nll-perf-examination, r=eddyb
convert NLL ops to caches

This is a extension of <https://github.com/rust-lang/rust/pull/51460>. It uses a lot more caching than we used to do. This caching is not yet as efficient as it could be, but I'm curious to see the current perf results.

This is the high-level idea: in the MIR type checker, use [canonicalized queries](https://rust-lang-nursery.github.io/rustc-guide/traits/canonical-queries.html) for all the major operations. This is helpful because the MIR type check is operating in a context where all types are fully known (mostly, anyway) but regions are completely renumbered. This means we often wind up with duplicate queries like `Foo<'1, '2> :Bar` and `Foo<'3, '4>: Bar`. Canonicalized queries let us re-use the results. By the final commit in this PR, we can essentially just "read off" the resulting region relations and add them to the NLL type check.
Diffstat (limited to 'src/rustllvm/PassWrapper.cpp')
0 files changed, 0 insertions, 0 deletions