diff options
| author | bors <bors@rust-lang.org> | 2021-12-31 19:54:10 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2021-12-31 19:54:10 +0000 |
| commit | cfa3fe5af339e724209b25715282adae0c61628f (patch) | |
| tree | 3d218549efc64ca3257e885dea7b1aba99bdd574 /compiler/rustc_codegen_gcc | |
| parent | 984a6bf9c11b7356f696c685a145d7136fff051c (diff) | |
| parent | 4abb3283f38886bef53545e2065c21268362b2df (diff) | |
| download | rust-cfa3fe5af339e724209b25715282adae0c61628f.tar.gz rust-cfa3fe5af339e724209b25715282adae0c61628f.zip | |
Auto merge of #90637 - Mark-Simulacrum:liveness-btree, r=lqd
Store liveness in interval sets for region inference On the 100,000 line test case from https://github.com/rust-lang/rust/issues/90445, this reduces memory usage from 35 GB to 444 MB at peak (based on DHAT results, though with regular malloc), and yields a 9.4x speedup, with wall time going from 14.5 seconds to 1.5s. Performance results show that for the majority of real-world code this has little to no impact, but it's expected to generally scale better for auto-generated functions and other cases which stress this area of the compiler, as results on #90445 illustrate. There may also be further room for improvement in future PRs making use of this data structures benefits over raw bitsets (which, at some level, are a less perfect fit for representing liveness, which is almost always composed of contiguous ranges, not point locations). Fixes #90445.
Diffstat (limited to 'compiler/rustc_codegen_gcc')
0 files changed, 0 insertions, 0 deletions
