[GHC] #7664: consider free variables as well as parameters in inline discounts

GHC cvs-ghc at haskell.org
Tue Feb 5 15:16:43 CET 2013


#7664: consider free variables as well as parameters in inline discounts
-----------------------------+----------------------------------------------
Reporter:  nfrisby           |          Owner:                  
    Type:  feature request   |         Status:  new             
Priority:  normal            |      Component:  Compiler        
 Version:  7.7               |       Keywords:                  
      Os:  Unknown/Multiple  |   Architecture:  Unknown/Multiple
 Failure:  None/Unknown      |      Blockedby:                  
Blocking:                    |        Related:                  
-----------------------------+----------------------------------------------
 The inliner assigns discount values for scrutinized parameters but not for
 scrutinized free variables.

 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.)

 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.

 For reference: the function in boyer2 that gets inlined is a join point
 that arises near the top of the worker for "Rewritefns.onewayunify".

-- 
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/7664>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler



More information about the ghc-tickets mailing list