summaryrefslogtreecommitdiff
path: root/compiler/GHC/Core/Utils.hs
diff options
context:
space:
mode:
authorSimon Peyton Jones <simonpj@microsoft.com>2022-04-20 11:50:48 +0100
committerSimon Peyton Jones <simonpj@microsoft.com>2022-05-23 17:09:34 +0100
commitbc723ac2cf2cfc329de4b8523bf891965075879b (patch)
tree30b6402a103a7d794a4eb0613e7714dfa0154311 /compiler/GHC/Core/Utils.hs
parentffbe28e56aa382164525300fbc32d78eefd95e7d (diff)
downloadhaskell-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.hs1
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