Functions whose body is no bigger (by the inliner’s metrics) than the call are always inlined vigorously. So (\.....-> k) replaces a call by a
single variable. GHC will do that a lot.
These ideas are best backed by use-cases where something good is not happening. Do you have some?
Simon
From: ghc-devs [mailto:ghc-devs-bounces@haskell.org]
On Behalf Of David Feuer
Sent: 27 January 2017 16:42
To: ghc-devs <ghc-devs@haskell.org>
Subject: Constant functions and selectors make for interesting arguments
GHC's inliner has a notion of "interesting argument" it uses to encourage inlining of functions called with (I think) dictionary arguments. I think another class of argument is very interesting, by being very boring. Any argument that looks like either
\ _ ... (Con _ ... x ... _ ) ... _ -> coerce x
or
\ _ ... _ -> k
Has a pretty good chance of doing a lot of good when inlined, perhaps plugging a space leak. Would it make sense to try to identify such functions and consider them interesting for inlining?