diff options
author | Simon Peyton Jones <simonpj@microsoft.com> | 2022-04-20 11:50:48 +0100 |
---|---|---|
committer | Simon Peyton Jones <simonpj@microsoft.com> | 2022-05-23 17:09:34 +0100 |
commit | bc723ac2cf2cfc329de4b8523bf891965075879b (patch) | |
tree | 30b6402a103a7d794a4eb0613e7714dfa0154311 /compiler/GHC/Core/Utils.hs | |
parent | ffbe28e56aa382164525300fbc32d78eefd95e7d (diff) | |
download | haskell-wip/T21386.tar.gz |
Improve FloatOut and SpecConstrwip/T21386
This patch addresses a relatively obscure situation that arose
when chasing perf regressions in !7847, which itself is fixing
It does two things:
* SpecConstr can specialise on ($df d1 d2) dictionary arguments
* FloatOut no longer checks argument strictness
See Note [Specialising on dictionaries] in GHC.Core.Opt.SpecConstr.
A test case is difficult to construct, but it makes a big difference
in nofib/real/eff/VSM, at least when we have the patch for #21286
installed. (The latter stops worker/wrapper for dictionary arguments).
There is a spectacular, but slightly illusory, improvement in
runtime perf on T15426. I have documented the specifics in
T15426 itself.
Metric Decrease:
T15426
Diffstat (limited to 'compiler/GHC/Core/Utils.hs')
-rw-r--r-- | compiler/GHC/Core/Utils.hs | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/compiler/GHC/Core/Utils.hs b/compiler/GHC/Core/Utils.hs index 6811498c54..8ade2a981a 100644 --- a/compiler/GHC/Core/Utils.hs +++ b/compiler/GHC/Core/Utils.hs @@ -1226,7 +1226,6 @@ there is only dictionary selection (no construction) involved Note [exprIsCheap] ~~~~~~~~~~~~~~~~~~ - See also Note [Interaction of exprIsWorkFree and lone variables] in GHC.Core.Unfold @exprIsCheap@ looks at a Core expression and returns \tr{True} if |