diff options
| author | bors <bors@rust-lang.org> | 2023-12-02 00:04:04 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2023-12-02 00:04:04 +0000 |
| commit | bd3a22115fa3b7c572333783cd315c134b48e967 (patch) | |
| tree | 3daf396ccda79d24988dbf8dc7ec332cd8dc1417 /compiler/rustc_expand | |
| parent | 8c2b57721728233e074db69d93517614de338055 (diff) | |
| parent | de2b8b13d4f4fe71b6915b5de6dee6ed1f6d3cb8 (diff) | |
| download | rust-bd3a22115fa3b7c572333783cd315c134b48e967.tar.gz rust-bd3a22115fa3b7c572333783cd315c134b48e967.zip | |
Auto merge of #118175 - lqd:unify-live-loans, r=matthewjasper
Centralize live loans maintenance to fix scope differences due to liveness As found in the recent [polonius crater run](https://github.com/rust-lang/rust/pull/117593#issuecomment-1801398892), NLLs and the location-insensitive polonius computed different scopes on some specific CFG shapes, e.g. the following.  I had missed that liveness data was pushed from different sources than just the liveness computation: there are a few places that do this -- and some of them may be unneeded or at the very least untested, as no tests changed when I tried removing some of them. Here, `_6` is e.g. dead on entry to `bb2[0]` during `liveness::trace`, but its regions will be marked as live later during "constraint generation" (which I plan to refactor away and put in the liveness module soon). This should cause the inflowing loans to be marked live, but they were only computed in `liveness::trace`. Therefore, this PR moves live loan maintenance to `LivenessValues`, so that the various places pushing liveness data will all also update live loans at the same time -- except for promoteds which I don't believe need them, and their liveness handling is already interesting/peculiar. All the regressions I saw in the initial crater run were related to this kind of shapes, and this change did fix all of them on the [next run](https://github.com/rust-lang/rust/pull/117593#issuecomment-1826132145). r? `@matthewjasper` (This will conflict with #117880 but whichever lands first is fine by me, the end goal is the same for both)
Diffstat (limited to 'compiler/rustc_expand')
0 files changed, 0 insertions, 0 deletions
