
#5928: INLINABLE fails to specialize in presence of simple wrapper -------------------------------------+------------------------------------ Reporter: tibbe | Owner: Type: bug | Status: new Priority: normal | Milestone: 7.6.2 Component: Compiler | Version: 7.4.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Unknown/Multiple Type of failure: None/Unknown | Difficulty: Unknown Test Case: | Blocked By: Blocking: | Related Tickets: -------------------------------------+------------------------------------ Comment (by simonpj): On an email thread Johan points out that calls to `f` do not lead to specialised code for `g`, even though `f` has an INLINE pragma: {{{ f = g {-# INLINE f #-} g :: Hashable a => ... g = ... {-# INLINABLE g #-} }}} This was a surprise to me. And yes, it's because specialisation currently occurs before any inlning. Currently the first "gentle" pass of simplification does no inlining. But I think that is for out-of-date reasons. If it honoured INLINE pragmas, then the above code would work just fine. But I got diverted, and the code is lying around on my disk waiting for attention. Reviving this ticket is a good incentive to get back to it. Simon -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/5928#comment:19 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler