
#14998: Sort out the strictness mess for exceptions -------------------------------------+------------------------------------- Reporter: simonpj | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: 8.4.3 Component: Compiler | Version: 8.2.2 Resolution: | Keywords: Exceptions Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by sgraf): The diff I used for item 1: {{{ diff --git a/compiler/prelude/primops.txt.pp b/compiler/prelude/primops.txt.pp index 1362704074..4c65ba4220 100644 --- a/compiler/prelude/primops.txt.pp +++ b/compiler/prelude/primops.txt.pp @@ -2377,7 +2377,7 @@ primop CatchRetryOp "catchRetry#" GenPrimOp -> (State# RealWorld -> (# State# RealWorld, a #) ) -> (State# RealWorld -> (# State# RealWorld, a #) ) with - strictness = { \ _arity -> mkClosedStrictSig [ catchArgDmd + strictness = { \ _arity -> mkClosedStrictSig [ lazyApply1Dmd , lazyApply1Dmd , topDmd ] topRes } -- See Note [Strictness for mask/unmask/catch] }}} No change in allocations, max +0.1% in counted instructions for `scc`. I have yet to run a validate, but this seems worthwhile if it would get rid of `ExnStr`! -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/14998#comment:8 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler