diff options
| author | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2020-11-13 23:23:28 +0100 |
|---|---|---|
| committer | Luc Van Oostenryck <luc.vanoostenryck@gmail.com> | 2020-11-17 18:03:24 +0100 |
| commit | 6b5e7cf5ac390f12472f914737c8a947eed0afe0 (patch) | |
| tree | e97c13b3412d0ce021b29101f143a1559fa17479 /validation/mem2reg | |
| parent | 09474b0a451bd4e3baea5e1a5e04f9b28f644bb3 (diff) | |
| download | sparse-dev-6b5e7cf5ac390f12472f914737c8a947eed0afe0.tar.gz | |
cfg: call simplify_memops() unconditionally.
Currently, in the main optimization loop, simplify_memops()
is only called if REPEAT_SYMBOL_CLEANUP have been set. This
has (at least) two problems:
1) simplify_memops() may itself create other 'symbol cleanup'
opportunities. That's fine and when it happens REPEAT_SYMBOL_CLEANUP
is correctly set but this is directly lost because repeat_phase
is cleared just after. So, loads and stores are not always
optimized away as they should.
2) Loads & stores are not always done directly on symbols, in
fact, it often happens that they are done on some PSEUDO_REG.
Here too, loads and stores are not always optimized away as
they should.
So, call simplify_memops() unconditionally.
Note: this have only very small effects on the tests' running time:
before after after too
real 4m18.001s real 4m18.655s real 4m19.4
user 71m32.911s user 72m02.701s user 72m06.6
sys 29m06.523s sys 29m01.721s sys 29m06.8
which is under the noise I usually have.
Signed-off-by: Luc Van Oostenryck <luc.vanoostenryck@gmail.com>
Diffstat (limited to 'validation/mem2reg')
0 files changed, 0 insertions, 0 deletions
