[GHC] #9434: GHC.List.reverse does not fuse
GHC
ghc-devs at haskell.org
Tue Aug 19 07:14:11 UTC 2014
#9434: GHC.List.reverse does not fuse
-------------------------------------+-------------------------------------
Reporter: dfeuer | Owner:
Type: bug | Status: patch
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:4 simonpj]:
> That looks helpful. But allocation probably should never go up. Do you
know why it does so in constraints?
>
> I use `-ticky` a lot to track down these kind of things.
>
> Simon
I don't know how to use `-ticky` yet. How would I get nofib compiled with
that? My best guess about constraints is that it's all about the evil
spirit in the machine, by which I mean the inliner. One phenomenon I saw
in some of my little tests was that inlining thresholds make things rather
less compositional than one might like. That is, if `f x = ... g ...` and
`g y = ... h ...`, then inlining `h` can make `g` "too big", so then `g`
won't be inlined in `f` unless someone leans on the compiler to do so. My
bet is that something that calls reverse is not being inlined as a result,
and therefore some other optimization opportunity is missed.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/9434#comment:5>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list