Reimplement DestinationPropagation according to live ranges. This PR reimplements DestinationPropagation as a problem of merging live-ranges of locals. We merge locals that have disjoint live-ranges. This allows merging several locals in the same round by updating live range information. Live ranges are mainly computed using the `MaybeLiveLocals` analysis. The subtlety is that we split each statement and terminator in 2 positions. The first position is the regular statement. The second position is a shadow, which is always more live. It encodes partial writes and dead writes as a local being live for half a statement. This half statement ensures that writes conflict with another local's writes and regular liveness. r? `@Amanieu` |
||
|---|---|---|
| .. | ||
| framework | ||
| impls | ||
| move_paths | ||
| debuginfo.rs | ||
| drop_flag_effects.rs | ||
| errors.rs | ||
| lib.rs | ||
| points.rs | ||
| rustc_peek.rs | ||
| un_derefer.rs | ||
| value_analysis.rs | ||