diff options
| author | bors <bors@rust-lang.org> | 2016-08-23 11:53:17 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-08-23 11:53:17 -0700 |
| commit | 012f45eaf70ca7f5d86e15fb304328786b446da9 (patch) | |
| tree | 8dac3e22d19007fe7f2aa28666cc3a077c1cf682 /src/rustllvm/PassWrapper.cpp | |
| parent | 0bd99f9d5c3bb10920f33819b38392137f7bfa11 (diff) | |
| parent | 1cc7c9010c819c1b61c661e151280d7b8ea093a0 (diff) | |
| download | rust-012f45eaf70ca7f5d86e15fb304328786b446da9.tar.gz rust-012f45eaf70ca7f5d86e15fb304328786b446da9.zip | |
Auto merge of #35854 - nikomatsakis:incr-comp-cache-hash-35549, r=mw
compute and cache HIR hashes at beginning This avoids the compile-time overhead of computing them twice. It also fixes an issue where the hash computed after typeck is differen than the hash before, because typeck mutates the def-map in place. Fixes #35549. Fixes #35593. Some performance measurements suggest this `HashesMap` is very small in memory (unobservable via `-Z time-passes`) and very cheap to construct. I do see some (very minor) performance wins in the incremental case after the first run -- the first run costs more because loading the dep-graph didn't have any hashing to do in that case. Example timings from two runs of `libsyntex-syntax` -- the (1) indicates first run, (2) indicates second run, and (*) indicates both together: | Phase | Master | Branch | | ---- | ---- | ---- | | compute_hashes_map (1) | N/A | 0.343 | | load_dep_graph (1) | 0 | 0 | | serialize dep graph (1) | 4.190 | 3.920 | | total (1) | 4.190 | 4.260 | | compute_hashes_map (2) | N/A | 0.344 | | load_dep_graph (2) | 0.592 | 0.252 | | serialize dep graph (2) | 4.119 | 3.779 | | total (2) | 4.71 | 4.375 | | total (*) | 8.9 | 8.635 | r? @michaelwoerister
Diffstat (limited to 'src/rustllvm/PassWrapper.cpp')
0 files changed, 0 insertions, 0 deletions
