#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