GHC: Ticket #7663: consider free variables as well as parameters in inline discounts
http://ghc.haskell.org/trac/ghc/ticket/7663
<p>
The inliner assigns discount values for scrutinized parameters but not for scrutinized free variables.
</p>
<p>
Experimenting with an aggressive lambda float at the end of the core2core pipeline identified a situation where (effectively) assigning discounts to free variables gives a performance boost. (The free variables become parameters during the float and hence are then assigned discounts.)
</p>
<p>
For spectral/boyer2, doing the late lambda float and then simplifying results in a -7% improvement in allocation. Without the simplifications, the late lambda float alone does not change allocation: thus the lion's share of the -7% could be attained simply by assigning discounts to scrutinized free variables.
</p>
<p>
For reference: the function in boyer2 that gets inlined is a join point that arises near the top of the worker for "Rewritefns.onewayunify".
</p>
en-usGHChttp://ghc.haskell.org/trac/ghc/chrome/site/ghc_logo.png
http://ghc.haskell.org/trac/ghc/ticket/7663
Trac 1.2.2.dev0nfrisbyWed, 06 Feb 2013 18:26:57 GMTstatus changed; resolution set
http://ghc.haskell.org/trac/ghc/ticket/7663#comment:1
http://ghc.haskell.org/trac/ghc/ticket/7663#comment:1
<ul>
<li><strong>status</strong>
changed from <em>new</em> to <em>closed</em>
</li>
<li><strong>resolution</strong>
set to <em>duplicate</em>
</li>
</ul>
<p>
Duplicate of <a class="new ticket" href="http://ghc.haskell.org/trac/ghc/ticket/3781" title="#3781: bug: Improve inlining for local functions (new)">#3781</a>
</p>
Ticket