about summary refs log tree commit diff
path: root/compiler/rustc_codegen_llvm/src
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2023-05-10 20:54:31 +0000
committerbors <bors@rust-lang.org>2023-05-10 20:54:31 +0000
commit9a767b6b9e1e53c3cfc25103ed7c88d77ee65d5d (patch)
tree98c9f7d991e6cf7503a1476aab221fa3beb088cd /compiler/rustc_codegen_llvm/src
parentcba14074bb4cc12bfe918eabd0d52a3999b2a461 (diff)
parentccc1da247bf3be7e71932844484847da6e35f185 (diff)
downloadrust-9a767b6b9e1e53c3cfc25103ed7c88d77ee65d5d.tar.gz
rust-9a767b6b9e1e53c3cfc25103ed7c88d77ee65d5d.zip
Auto merge of #110820 - cjgillot:faster-dcp, r=oli-obk
Optimize dataflow-const-prop place-tracking infra

Optimization opportunities found while investigating https://github.com/rust-lang/rust/pull/110719

Computing places breadth-first ensures that we create short projections before deep projections, since the former are more likely to be propagated.

The most relevant is the pre-computation of flooded places. Callgrind showed `flood_*` methods and especially `preorder_preinvoke` were especially hot. This PR attempts to pre-compute the set of `ValueIndex` that `preorder_invoke` would visit.

Using this information, we make some `PlaceIndex` inaccessible when they contain no `ValueIndex`, allowing to skip computations for those places.

cc `@jachris` as original author
Diffstat (limited to 'compiler/rustc_codegen_llvm/src')
0 files changed, 0 insertions, 0 deletions