about summary refs log tree commit diff
path: root/compiler/rustc_codegen_llvm/src
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2024-12-30 01:58:39 +0000
committerbors <bors@rust-lang.org>2024-12-30 01:58:39 +0000
commit8cdc67ed23e486a9f2b3e667a50d9b8782ba4056 (patch)
treefa9d49a1190d0d3b7b29127ba81e855b65028d6f /compiler/rustc_codegen_llvm/src
parent6cd33d889d0cd554e195d0eb9a38af88152b786f (diff)
parent089c525df2410d3d2a99767c0fc93689a4432fed (diff)
downloadrust-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