mirror of
https://github.com/rust-lang/rust.git
synced 2026-04-28 03:07:24 +03:00
c7aa99f36c
JumpThreading: compute place and value indices on-demand Profiling JumpThreading reveals that a large part of the runtime happens constructing the place and value `Map`. This is unfortunate, as jump-threading may end up not even doing anything. The cause for this large up-front cost is following: `Map` attempts to create a `PlaceIndex` for each place that *may* hold a relevant value. This means all places that appear in MIR, but also all places whose value is accessed by a projection of a copy of a larger place. This PR refactors the creation of `Map` to happen on-demand: place and value indices are created when threading computation happens. The up-front mode is still relevant for DataflowConstProp, so is not touched.