[GHC] #10626: Missed opportunity for SpecConstr
GHC
ghc-devs at haskell.org
Tue Feb 7 23:52:38 UTC 2017
#10626: Missed opportunity for SpecConstr
-------------------------------------+-------------------------------------
Reporter: simonpj | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 7.10.1
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
Type of failure: Runtime | Unknown/Multiple
performance bug | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by dsc):
Just tried with GHC 8.0.2 and 7.10.3; similar problem.
By the way, the original source looks like this:
{{{
intersperseTest =
$$(maybeSimplify $
S.enumFromToNum [|| 1 ||] [|| 1000000 :: Int ||]
& S.concatMap (\a -> yield a S.++ yield a)
& S.intersperse [|| 42 ||]
& S.concatMap yield
& S.sum_
& runIdentityE_static
)
}}}
(WIP library/experiment, trying for something like the
[https://hackage.haskell.org/package/streaming streaming] package with
robust fusion using typed TH :))
If I change the first `concatMap` to just `concatMap yield` or remove
either the `intersperse` or the second `concatMap`, the problem is not
present.
I've had similar instances where the problem disappears after removing a
random part of the pipeline (with that part fusing correctly if I remove a
different part). Feels like I'm hitting some size limit rather than a
fundamental problem (?) But as mentioned above, I already tried setting
various GHC flags to large numbers.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10626#comment:4>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list