summaryrefslogtreecommitdiff
path: root/compiler/basicTypes/BasicTypes.hs
diff options
context:
space:
mode:
authorSimon Peyton Jones <simonpj@microsoft.com>2018-04-20 13:57:16 +0100
committerSimon Peyton Jones <simonpj@microsoft.com>2018-04-20 17:08:02 +0100
commit8b10b8968f25589b1857f12788fc79b3b142c467 (patch)
tree2750c2ccea607d1efdda84bc12cea92d3240fed9 /compiler/basicTypes/BasicTypes.hs
parent2fbe0b5171fd5639845b630faccb9a0c3b564df7 (diff)
downloadhaskell-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