[GHC] #13104: runRW# ruins join points

GHC ghc-devs at haskell.org
Wed Oct 24 10:48:41 UTC 2018


#13104: runRW# ruins join points
-------------------------------------+-------------------------------------
        Reporter:  lukemaurer        |                Owner:  chessai
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:  8.8.1
       Component:  Compiler          |              Version:  8.1
      Resolution:                    |             Keywords:  JoinPoints
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 sgraf):

 Replying to [comment:19 simonpj]:
 > So yes, either known-key or wired-in `Id`.  We need wired-in if we need
 IdInfo that won't be inferred; but actually I think the right strictness
 ''will'' be inferred from its definition, so maybe known-key is enough.

 Ah, right. I thought I checked this and expected `runRW#`'s strictness
 signature to be present in the interface file for `GHC.Exts`, but it
 wasn't, so I assumed it got special treatment, like wired-in things.

 It turns out that `f` in the this program

 {{{
 {-# LANGUAGE MagicHash #-}
 module Foo where

 import GHC.Magic

 f = runRW#
 }}}

 has the right strictness signature `<C(S),C1(U)>`. Then it's a little
 unclear to me why `loop 0` (or the definition of `loop`, at least) isn't
 eta-expanded.

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


More information about the ghc-tickets mailing list