#10288: -flate-dmd-anal triggers "Entered absent arg" -------------------------------------+------------------------------------- Reporter: yongqli | Owner: simonpj Type: bug | Status: new Priority: normal | Milestone: 7.10.2 Component: Compiler | Version: 7.10.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: Runtime crash | Unknown/Multiple Blocked By: | Test Case: Related Tickets: | Blocking: | Differential Revisions: -------------------------------------+------------------------------------- Comment (by Simon Peyton Jones <simonpj@…>): In [changeset:"d5773a4939b1feea51ec0db6624c9462751e948a/ghc"]: {{{ #!CommitTicketReference repository="ghc" revision="d5773a4939b1feea51ec0db6624c9462751e948a" Teach DmdAnal that coercions are value arguments! The demand analyser was treating coercion args like type args, which meant that the arguments in a strictness signature got out of step with the arguments of a call. Result chaos and disaster. Trac #10288 showed it up. It's hard to get this bug to show up in practice because - functions abstracted over coercions are usually abstracted over *boxed* coercions - we don't currently unbox a boxed-coercion arg because it's GADT (I see how to fix this too) But after floating, optimisation, and so on, Trac #10288 did get a function abstracted over an unboxed coercion, and then the -flate-dmd-anal pass went wrong. I don't think I can come up with a test case, but I don't think it matters too much. Still to come - Fix a second bug, namely that coercion variables are wrongly marked as absent because DmdAnal doesn't check the the free variables of casts. I think this never bites in practice (see the follow-up commit) - Make GADT products work with strictness analysis }}} -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10288#comment:9> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler