[GHC] #5996: fix for CSE

GHC ghc-devs at haskell.org
Tue Nov 12 15:07:25 UTC 2013


#5996: fix for CSE
--------------------------------------------+------------------------------
        Reporter:  michalt                  |            Owner:  simonpj
            Type:  bug                      |           Status:  patch
        Priority:  normal                   |        Milestone:  7.8.1
       Component:  Compiler                 |          Version:  7.5
      Resolution:                           |         Keywords:
Operating System:  Unknown/Multiple         |     Architecture:
 Type of failure:  Runtime performance bug  |  Unknown/Multiple
       Test Case:                           |       Difficulty:  Unknown
        Blocking:                           |       Blocked By:
                                            |  Related Tickets:
--------------------------------------------+------------------------------

Comment (by Simon Peyton Jones <simonpj@…>):

 In [changeset:"0001d161f7f6a6f7392eb2a3229f6204c3423450/ghc"]:
 {{{
 #!CommitTicketReference repository="ghc"
 revision="0001d161f7f6a6f7392eb2a3229f6204c3423450"
 Fix egregious omission in CSE (Trac #5996)

 This patch fixes a bad omission in CSE, thanks to 'michaelt' for spotting
 it, and correctly identifying the fix (in cseRhs).  The trouble was with
    x1 = C a b
    x2 = C x1 b
    y1 = C a b
    y2 = C y1 b
 we were not commoning up y2=x2, because we failed to substitute y1:=x1,
 so y2's RHS looked different to x2's

 I also refactoring, so taht the cs_map in a CSEnv map is
        cs_map    :: CoreMap (OutExpr, Id)
 instead of
        cs_map    :: CoreMap (OutExpr, OutExpr)
 Much nicer!

 This doesn't make much difference to allocation, but it gives a
 surprisingly
 big benefit to binary size.

 --------------------------------------------------------------------------------
         Program           Size    Allocs   Runtime   Elapsed  TotalMem
 --------------------------------------------------------------------------------
            ansi          -1.7%     -0.8%      0.00      0.00     +0.0%
            bspt          -1.6%     -1.5%      0.01      0.01     +0.0%
       cacheprof          -1.8%     -0.2%     +1.6%     +1.9%     +2.7%
             fft          -1.4%     -1.3%      0.06      0.06    +11.1%
             ida          -1.4%     -1.0%      0.12      0.12     +0.0%
            rfib          -1.4%     -0.1%      0.03      0.03     +0.0%
             scs          -1.6%     -0.1%     +1.5%     +1.5%     +0.0%
   spectral-norm          -1.3%     -0.1%     -0.2%     -0.2%     +0.0%
             tak          -1.4%     -0.1%      0.02      0.02     +0.0%
         veritas          -1.4%     -0.1%      0.00      0.00     +0.0%
 --------------------------------------------------------------------------------
             Min          -2.5%     -1.5%    -11.8%    -11.8%     -8.0%
             Max          -1.0%     +0.0%     +2.7%     +2.5%    +11.1%
  Geometric Mean          -1.3%     -0.1%     -2.6%     -2.6%     +0.0%
 }}}

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/5996#comment:9>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list