
Make foldl's inline phased, and see what happens?
Presumably the reason it doesn't have a phase limit yet is that it never
participated in any fusion before, so there was never a reason to not just
inline.
Other than that it seems like:
reverse xs
=> rewrite
build (\c n -> foldl (noinlineFlip c) n xs)
=> inline
foldl (noinlineFlip (:)) [] xs
=> rewrite
reverse xs
where I assume you need a special flip which may or may not exist in these
modules already.
On Fri, Aug 15, 2014 at 12:46 PM, David Feuer
Yes, but I'm not sure how to do that, especially because foldl doesn't have the phased NOINLINE that foldr does. On Aug 15, 2014 12:45 PM, "Dan Doel"
wrote: Isn't this kind of thing fixed for other functions by rewriting back into the direct recursive definition if no fusion happens?
On Fri, Aug 15, 2014 at 11:41 AM, David Feuer
wrote: I'm having trouble when it doesn't fuse—it ends up with duplicate bindings at the top level, because build gets inlined n times, and the result lifted out. Nothing's *wrong* with the code, except that there are multiple copies of it. On Aug 15, 2014 10:58 AM, "GHC"
wrote: #9434: GHC.List.reverse does not fuse
-------------------------------------+------------------------------------- Reporter: dfeuer | Owner: Type: bug | Status: new 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 simonpj):
Great. Just check that when fusion ''doesn't'' take place, the result is good. And do a `nofib` comparison for good luck. Then submit a patch.
Thanks for doing all this work on fusion, David.
Simon
-- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9434#comment:2 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://www.haskell.org/mailman/listinfo/ghc-devs