[GHC] #9434: GHC.List.reverse does not fuse

GHC ghc-devs at haskell.org
Wed Oct 1 15:58:02 UTC 2014


#9434: GHC.List.reverse does not fuse
-------------------------------------+-------------------------------------
              Reporter:  dfeuer      |            Owner:
                  Type:  bug         |           Status:  infoneeded
              Priority:  normal      |        Milestone:
             Component:              |          Version:  7.9
  libraries/base                     |         Keywords:
            Resolution:              |     Architecture:  Unknown/Multiple
      Operating System:              |       Difficulty:  Easy (less than 1
  Unknown/Multiple                   |  hour)
       Type of failure:  Runtime     |       Blocked By:
  performance bug                    |  Related Tickets:
             Test Case:              |
              Blocking:              |
Differential Revisions:              |
-------------------------------------+-------------------------------------

Comment (by dfeuer):

 Replying to [comment:14 nomeata]:
 > Is this understanding correct: `reverse` is made a good consumer, and
 additionally, it is a good producer when immediately consumed by `map`.

 It's made a good consumer, yes. It never becomes a good producer, per se;
 rather, it fuses with map to form something else that's not a good
 producer but fuses with map. The purpose of this is to shift the break we
 introduce in the fusion "pipeline" to the left in the hope that it will
 coalesce with another such break further on.

 > You might make the rules simpler by using `mapReverseFB revId` instead
 of `revFB`: No need to have both `mapMapReverse` and `mapReverse` then.

 That's a good idea.

 > There is quite a bit of logic in this patch. Would you mind adding test
 cases for this, so that this behaviour is not accidentally broken in the
 future?

 I can add some correctness tests for sure.

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


More information about the ghc-tickets mailing list