diff options
| author | bors <bors@rust-lang.org> | 2024-12-30 01:58:39 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2024-12-30 01:58:39 +0000 |
| commit | 8cdc67ed23e486a9f2b3e667a50d9b8782ba4056 (patch) | |
| tree | fa9d49a1190d0d3b7b29127ba81e855b65028d6f /compiler/rustc_codegen_llvm/src | |
| parent | 6cd33d889d0cd554e195d0eb9a38af88152b786f (diff) | |
| parent | 089c525df2410d3d2a99767c0fc93689a4432fed (diff) | |
| download | rust-8cdc67ed23e486a9f2b3e667a50d9b8782ba4056.tar.gz rust-8cdc67ed23e486a9f2b3e667a50d9b8782ba4056.zip | |
Auto merge of #134670 - lqd:polonius-next-episode-4, r=jackh726
Compute liveness constraints in location-sensitive polonius This continues the location-sensitive prototype. In this episode, we build the liveness constraints. Reminder of the approach we're taking: we need variance data to create liveness edges in the forward/backward/both directions (respectively in the cases of covariance, contravariance, invariance) in the localized constraint graph. This PR: - introduces the holder for that, and for the liveness data in the correct shape: the transpose of what we're using today, "live regions per points". - records use/drop live region variance during tracing - records regular live region variance at the end of liveness - records the correctly shaped live region per point matrix - uses all of the above to compute the liveness constraints (There's still technically one tiny part of the liveness owl left to do, but I'll leave it for a future PR: we also need to disable the NLL optimization that avoids computing liveness for locals whose types contain a region outliving a free region -- the existing constraints make it effectively live at all points; this doesn't work under polonius) r? `@jackh726` cc `@matthewjasper`
Diffstat (limited to 'compiler/rustc_codegen_llvm/src')
0 files changed, 0 insertions, 0 deletions
