
#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 simonpj): Primops are intended to reflect machine operations that simply cannot be expressed more simply in Haskell (at least not efficiently): e.g. add two `Int#` values. Things like `unsafeCoerce#`, `lazy`, and `runRW#` really are expressible in a functional style; and "lowering" them in `CoreToSTG` feels like the right place to deal with them. 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. The important thing is that we don't inline it until very very late; and (sadly) we may want the simplifier to treat it specially. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13104#comment:19 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler