diff options
author | Alon Zakai <alonzakai@gmail.com> | 2019-03-25 14:11:02 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-25 14:11:02 -0700 |
commit | 5e19a7b05144736ec17ee6b0bb366afa744137c6 (patch) | |
tree | 0b2ef9840759e501b8c519e46e57e887a2f31044 /src/passes/Precompute.cpp | |
parent | 5d240dc566267ec1871df8b43e53cb56b2d2ff40 (diff) | |
download | binaryen-5e19a7b05144736ec17ee6b0bb366afa744137c6.tar.gz binaryen-5e19a7b05144736ec17ee6b0bb366afa744137c6.tar.bz2 binaryen-5e19a7b05144736ec17ee6b0bb366afa744137c6.zip |
Semi-SSA improvements (#1965)
This adds an ssa-nomerge pass, which like ssa creates new local indexes for each set, but it does not alter indexes that have merges (in practice adding indexes to merges can lead to more copies in the end.)
This also stops adding a new local index for a set that is already in "ssa form", that is, has only one set (aside from the zero initialization which wasm mandates, but for an "ssa form" index, that must not be used).
This then enables ssa-nomerge in -O3 and -Os. This doesn't help much on well-optimized code like from the wasm backend (but it does sometimes - 0.5% code size improvement on Box2D), but on AssemblyScript for example it can remove a copy in the n-body benchmark as can be seen in the test updates here.
Diffstat (limited to 'src/passes/Precompute.cpp')
0 files changed, 0 insertions, 0 deletions