
#6056: INLINABLE pragma prevents worker-wrapper to happen. --------------------------------------------+------------------------------ Reporter: milan | Owner: simonpj Type: bug | Status: new Priority: normal | Milestone: 7.8.1 Component: Compiler | Version: 7.4.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: Runtime performance bug | Unknown/Multiple Test Case: | Difficulty: Unknown Blocking: | Blocked By: | Related Tickets: --------------------------------------------+------------------------------ Comment (by simonpj): I agree that it's surprising and undesirable. The reason it happens is this. GHC keeps an "`Unfolding` inside each `Id`: * For INLINEABLE things it is the original user-written RHS * For w/w'd things it is the wrapper function But there's only ''one'' `Unfolding` for each `Id`, so we have to choose. As you point out, that is a pity. Solution is probably to keep two unfoldings, in effect. Thanks for pointing this out so clearly. Simon -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/6056#comment:4 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler