diff options
author | Simon Peyton Jones <simonpj@microsoft.com> | 2018-04-20 13:57:16 +0100 |
---|---|---|
committer | Simon Peyton Jones <simonpj@microsoft.com> | 2018-04-20 17:08:02 +0100 |
commit | 8b10b8968f25589b1857f12788fc79b3b142c467 (patch) | |
tree | 2750c2ccea607d1efdda84bc12cea92d3240fed9 /compiler/basicTypes/BasicTypes.hs | |
parent | 2fbe0b5171fd5639845b630faccb9a0c3b564df7 (diff) | |
download | haskell-8b10b8968f25589b1857f12788fc79b3b142c467.tar.gz |
Inline wrappers earlier
This patch has a single significant change:
strictness wrapper functions are inlined earlier,
in phase 2 rather than phase 0.
As shown by Trac #15056, this gives a better chance for RULEs to fire.
Before this change, a function that would have inlined early without
strictness analyss was instead inlining late. Result: applying
"optimisation" made the program worse.
This does not make too much difference in nofib, but I've stumbled
over the problem more than once, so even a "no-change" result would be
quite acceptable. Here are the headlines:
--------------------------------------------------------------------------------
Program Size Allocs Runtime Elapsed TotalMem
--------------------------------------------------------------------------------
cacheprof -0.5% -0.5% +2.5% +2.5% 0.0%
fulsom -1.0% +2.6% -0.1% -0.1% 0.0%
mate -0.6% +2.4% -0.9% -0.9% 0.0%
veritas -0.7% -23.2% 0.002 0.002 0.0%
--------------------------------------------------------------------------------
Min -1.4% -23.2% -12.5% -15.3% 0.0%
Max +0.6% +2.6% +4.4% +4.3% +19.0%
Geometric Mean -0.7% -0.2% -1.4% -1.7% +0.2%
* A worthwhile reduction in binary size.
* Runtimes are not to be trusted much but look as if they
are moving the right way.
* A really big win in veritas, described in comment:1 of
Trac #15056; more fusion rules fired.
* I investigated the losses in 'mate' and 'fulsom'; see #15056.
Diffstat (limited to 'compiler/basicTypes/BasicTypes.hs')
0 files changed, 0 insertions, 0 deletions