about summary refs log tree commit diff
path: root/compiler/rustc_mir_transform/src
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2023-10-11 16:46:03 +0000
committerbors <bors@rust-lang.org>2023-10-11 16:46:03 +0000
commitc1691db366c0f2e2341c60377c248ca2d9335076 (patch)
treed4d581a8671c9723e18750b181bf7979607f9ee9 /compiler/rustc_mir_transform/src
parent3c23df49352264938a726f6a586d6019e602c5cf (diff)
parent3dcff0051a87dea2a9a319c45c0df57acd29cdca (diff)
downloadrust-c1691db366c0f2e2341c60377c248ca2d9335076.tar.gz
rust-c1691db366c0f2e2341c60377c248ca2d9335076.zip
Auto merge of #113218 - lqd:polonius-scopes, r=jackh726
Compute NLL loan scopes using the polonius model

For a *location-insensitive* analysis (that is, without expressiveness improvements for users yet), this PR implements loans going out of scope using reachability and liveness, rather than checking if the issuing region's values contain a given CFG point. This is equivalent to NLL scopes and computes the same data.

r? `@matthewjasper`

A couple of notes:
- there are some assumptions about SCC representatives, placeholders, free regions, and member constraints that I believe hold, and they're documented in the code
- this passes all the UI tests with `-Zpolonius=next` -- the perf is [not terrible](https://github.com/rust-lang/rust/pull/112432#issuecomment-1749685862) and there are a bunch of ways to improve it in the future.
- there's a fixme left, hopefully Matthew you know a clean way to get the information it mentions.
Diffstat (limited to 'compiler/rustc_mir_transform/src')
0 files changed, 0 insertions, 0 deletions