#11064: Call Arity has the trivial application case wrong -------------------------------------+------------------------------------- Reporter: nomeata | Owner: nomeata Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 7.10.2 Resolution: | Keywords: 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 Joachim Breitner <mail@…>): In [changeset:"a58eeb7febd67c93dab82de7049ef1dcdecd34e9/ghc" a58eeb7/ghc]: {{{ #!CommitTicketReference repository="ghc" revision="a58eeb7febd67c93dab82de7049ef1dcdecd34e9" Call Arity: In "e x", the result of "x" is not shared in contrast to "e (f x)", where CorePrep will turn it into "let y = f x in e x". So in let f = ... in e (f x) we know that f is called at most once, but in let f = ... in e f we do not know that. Previously Call Arity would assume that in "e x", "x" is evaluated at most once. This rarely would make a difference (the argument "x" is analized with an incoming arity of 0, so no eta-expansion would be done anyways), but of course this should still be fixed. This fixes #11064. Note the corresponding code dmdTransformThunkDmd in DmdAnal. }}} -- Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/11064#comment:1> GHC <http://www.haskell.org/ghc/> The Glasgow Haskell Compiler