summaryrefslogtreecommitdiff
path: root/.gitignore
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2018-06-07 19:05:43 -0700
committerGitHub <noreply@github.com>2018-06-07 19:05:43 -0700
commit3af404435b3cfa90704810370703f20921c055dd (patch)
treea1ad5f2b7985db6a9b92ef651c8f7ea2368747ec /.gitignore
parent682bb461e6084048d1085f985f2a0973977d06b4 (diff)
downloadbinaryen-3af404435b3cfa90704810370703f20921c055dd.tar.gz
binaryen-3af404435b3cfa90704810370703f20921c055dd.tar.bz2
binaryen-3af404435b3cfa90704810370703f20921c055dd.zip
duplicate-function-elimination improvements (#1590)
On a codebase with 370K functions, 160K were in fact duplicate (!)... and it took many many passes to figure that out, over 2 minutes in fact (!), as A and B may be identical only after we see that the functions C1, C2 that they call are identical (so there can be long "chains" here). To avoid this, limit how many passes we do. In -O1, just do one pass - that gets most duplicates. In -O2, do 10 passes - that gets almost all of it on this codebase. And in -O3 (or -Os/-Oz) do as many passes as necessary (i.e., the old behavior). This at least lets iteration builds (-O1) be nice and fast. This PR also refactors the hashing code used in that pass, moving it to nicer header files for clearer readability. Also some other minor cleanups in hashing code that helped debug this.
Diffstat (limited to '.gitignore')
0 files changed, 0 insertions, 0 deletions