[GHC] #9246: GHC generates poor code for repeated uses of min/max

GHC ghc-devs at haskell.org
Tue Jul 1 11:19:40 UTC 2014


#9246: GHC generates poor code for repeated uses of min/max
--------------------------------------------+------------------------------
        Reporter:  arotenberg               |            Owner:
            Type:  bug                      |           Status:  new
        Priority:  normal                   |        Milestone:
       Component:  Compiler                 |          Version:  7.8.2
      Resolution:                           |         Keywords:
Operating System:  Windows                  |     Architecture:  x86_64
 Type of failure:  Runtime performance bug  |  (amd64)
       Test Case:                           |       Difficulty:  Unknown
        Blocking:                           |       Blocked By:
                                            |  Related Tickets:  #6135
--------------------------------------------+------------------------------

Comment (by arotenberg):

 Having now read "A transformation based optimiser for Haskell", I learned
 about the `let-no-escape` optimization, which I was not previously aware
 of. Looking at the output of `-ddump-stg` on UglyBranching, all of the
 local lambdas are actually bound by `let-no-escape`, which makes the whole
 question irrelevant.

 Well, now I feel silly. I guess if there's something to be learned here,
 it's that `let-no-escape` could be publicized better! Everything I've seen
 on the internet up until now was all "look at the Core, if you see `let`,
 that's a Bad Thing and you might want to Do Something About It!" (Quoth
 the GHC docs: "If profiling has pointed the finger at particular
 functions, look at their Core code. lets are bad, cases are good, ...
 nested lambdas are bad, ...")

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


More information about the ghc-tickets mailing list