[GHC] #609: Useful optimisation for set-cost-centre

GHC trac at galois.com
Thu Dec 15 06:02:41 EST 2005


#609: Useful optimisation for set-cost-centre
-------------------------------+--------------------------------------------
  Reporter:  simonpj           |          Owner:         
      Type:  task              |         Status:  new    
  Priority:  normal            |      Milestone:         
 Component:  Compiler          |        Version:  None   
  Severity:  normal            |     Resolution:  None   
  Keywords:                    |             Os:  Unknown
Difficulty:  Moderate (1 day)  |   Architecture:  Unknown
-------------------------------+--------------------------------------------
Changes (by simonmar):

  * architecture:  => Unknown
  * difficulty:  => Moderate (1 day)
  * os:  => Unknown

Old description:

> {{{
> If you compile, for example, drvrun014 with -prof -auto-all, you'll see
> stuff like
>
>     (scc "c" (dataToTag#)) y
>
> This generates bad code, because we end up eta-expaning dataToTag, which
> allocates an extra function closure.
>
> We think that in general
>
>    (scc "c" e) y  = scc "c" (e y)
>
> to within a small constant factor.  So maybe the simplifier, or CorePrep,
> or both, should do this transformation.
> }}}

New description:

 {{{
 If you compile, for example, drvrun014 with -prof -auto-all, you'll see
 stuff like

     (scc "c" (dataToTag#)) y

 This generates bad code, because we end up eta-expaning dataToTag, which
 allocates an extra function closure.

 We think that in general

    (scc "c" e) y  = scc "c" (e y)

 to within a small constant factor.  So maybe the simplifier, or CorePrep,
 or both, should do this transformation.
 }}}

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


More information about the Glasgow-haskell-bugs mailing list