[GHC] #876: Length is not a good consumer

George Colpitts george.colpitts at gmail.com
Mon Dec 12 12:44:14 UTC 2016


my apologies, sorry for the terrible bug report

On Sun, Dec 11, 2016 at 11:05 AM GHC <ghc-devs at haskell.org> wrote:

> #876: Length is not a good consumer
> -------------------------------------+-------------------------------------
>         Reporter:  ariep@…           |                Owner:
>             Type:  bug               |               Status:  new
>         Priority:  lowest            |            Milestone:  7.6.2
>        Component:  libraries/base    |              Version:  6.5
>       Resolution:                    |             Keywords:  length
> Operating System:  Linux             |         Architecture:
>                                      |  Unknown/Multiple
>  Type of failure:  Runtime           |            Test Case:
>   performance bug                    |  perf/should_run/T876
>       Blocked By:                    |             Blocking:
>  Related Tickets:                    |  Differential Rev(s):
>        Wiki Page:                    |
> -------------------------------------+-------------------------------------
>
> Comment (by nomeata):
>
>  This code, compiled with `-O, does fuse, and allocates nothing (or
>  constant amounts)
>  {{{#!hs
>
>  module Foo where
>  x :: Int -> Int
>  x n = length [0..(10^n)::Int]
>  }}}
>
>  {{{
>  $ ghci -fobject-code -O Foo
>  GHCi, version 7.10.3: http://www.haskell.org/ghc/  :? for help
>  [1 of 1] Compiling Foo              ( Foo.hs, Foo.o )
>  Ok, modules loaded: Foo.
>  Prelude Foo> :set +s
>  Prelude Foo> x 1
>  11
>  (0.03 secs, 14,976,744 bytes)
>  Prelude Foo> x 7
>  10000001
>  (0.02 secs, 0 bytes)
>  Prelude Foo> x 8
>  100000001
>  (0.04 secs, 0 bytes)
>  }}}
>
>  (almost) HEAD:
>  {{{
>  GHCi, version 8.1.20161117: http://www.haskell.org/ghc/  :? for help
>  [1 of 1] Compiling Foo              (.hs -> .o)
>  WARNING: file compiler/simplCore/SimplCore.hs, line 663
>    Simplifier bailing out after 4 iterations [58, 14, 2, 2]
>      Size = {terms: 96, types: 32, coercions: 0}
>  Ok, modules loaded: Foo (Foo.o).
>  Prelude Foo> :set +s
>  Prelude Foo> x 1
>  11
>  (0.19 secs, 94,792 bytes)
>  Prelude Foo> x 2
>  101
>  (0.01 secs, 94,648 bytes)
>  Prelude Foo> x 7
>  10000001
>  (0.01 secs, 98,568 bytes)
>  Prelude Foo> x 8
>  100000001
>  (0.05 secs, 98,448 bytes)
>  }}}
>
>  Testing this in with interpreted code is not sufficient, as the optimizer
>  does less in that case. So so far, everything seems as expected to me.
>
> --
> Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/876#comment:30>
> GHC <http://www.haskell.org/ghc/>
> The Glasgow Haskell Compiler
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20161212/509292a6/attachment.html>


More information about the ghc-devs mailing list