[GHC] #8714: ExistentialQuantification plus DeriveDataTypeable leads to core lint error

GHC ghc-devs at haskell.org
Tue Mar 11 11:16:02 UTC 2014


#8714: ExistentialQuantification plus DeriveDataTypeable leads to core lint error
-------------------------------------+----------------------------------
        Reporter:  CoreyOConnor      |            Owner:
            Type:  bug               |           Status:  new
        Priority:  highest           |        Milestone:  7.8.1
       Component:  Compiler          |          Version:  7.8.1-rc2
      Resolution:                    |         Keywords:
Operating System:  Unknown/Multiple  |     Architecture:  x86_64 (amd64)
 Type of failure:  None/Unknown      |       Difficulty:  Unknown
       Test Case:                    |       Blocked By:
        Blocking:                    |  Related Tickets:
-------------------------------------+----------------------------------

Comment (by Simon Peyton Jones <simonpj@…>):

 In [changeset:"ef44a429af4a630a153b5774d0e19dbcad8328d5/ghc"]:
 {{{
 #!CommitTicketReference repository="ghc"
 revision="ef44a429af4a630a153b5774d0e19dbcad8328d5"
 Make SetLevels do substitution properly (fixes Trac #8714)

 Nowadays SetLevels floats case expressions as well as let-bindings,
 and case expressions bind type variables.  We need to clone all such
 floated binders, to avoid accidental name capture.  But I'd forgotten
 to substitute for the cloned type variables, causing #8714.  (In the
 olden days only Ids were cloned, from let-bindings.)

 This patch fixes the bug and does quite a bit of clean-up refactoring
 as well, by putting the context level in the LvlEnv.

 There is no effect on performance, except that nofib 'rewrite' improves
 allocations by 3%.  On investigation I think it was a fluke to do with
 loop-cutting in big letrec nests.  But at least it's a fluke in the
 right direction.

         Program           Size    Allocs   Runtime   Elapsed  TotalMem
 --------------------------------------------------------------------------------
             Min          -0.4%     -3.0%    -19.4%    -19.4%    -26.7%
             Max          -0.0%     +0.0%    +17.9%    +17.9%      0.0%
  Geometric Mean          -0.1%     -0.0%     -0.7%     -0.7%     -0.4%
 }}}

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


More information about the ghc-tickets mailing list