
#14375: Implement with# primop -------------------------------------+------------------------------------- Reporter: simonpj | Owner: bgamari Type: bug | Status: new Priority: highest | Milestone: 8.8.1 Component: Compiler | Version: 8.2.1 Resolution: | Keywords: JoinPoints Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: #14346 | Differential Rev(s): Phab:D4110 Wiki Page: | -------------------------------------+------------------------------------- Changes (by osa1): * differential: Phab:D4110, Phab:D4189 => Phab:D4110 Comment: This ticket is really confusing so I talked to Ben on this. Here's the current status: - #14346 is fixed but the `touch#` primop is essentially still broken. The suggestion of ticket:14346#comment:18 suggested implementing some hacks in simplifier to avoid removing unreachable continuation if the continuation calls `touch#`, but that's not implemented and as far as I can see there are no plans on implementing it (with no explicit reason to not to). Instead we want to use `with#` whenever possible. To fix the problem with #14346 we introduced some `NOINLINE`s to functions that use `touch#`, so simplifier now can't see that the `touch#` is unreacable and remove it. - This ticket has two ideas: 1. A new primop `with#`. This is being implemented in Phab:D4110. 2. A more efficient implementation plan for primops that take continuations. This is being implemented in Phab:D4647, although it seems to be dormant now (last update from the author is in Jun). To keep things more manageble (and avoid the communication problems we had with e.g. #15696) let's track the progress for (2) in another ticket and only worry about (1) here. If we really want (2) before (1) then we can consider the ticket for (1) as a blocker, and move on to this ticket after (2). (I'm removing Phab:D4189 from the diffs list) -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/14375#comment:24 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler