
#12463: SPECIALIZABLE pragma? -------------------------------------+------------------------------------- Reporter: bgamari | Owner: Type: feature request | Status: new Priority: low | Milestone: Component: Compiler | Version: 8.0.1 Resolution: | Keywords: Inlining 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 mpickering): Here is my understanding of what Ben means. --- We introduce a new top-level pragma which is introduced the the syntax `{-# RECURSIVE_SPECIALISABLE varid #-}`. Only top-level functions can be marked with this pragma. For a function `f` which is marked with `RECURSIVE_SPECIALISABLE`: 1. When `f` is exported, `f`'s unfolding is included in the interface file. (As if `f` was marked `INLINABLE`). 2. When `f` is used in the definition of another function `g`, `g`'s unfolding is included in the interface file when `g` is exported. (As if `g` was marked `INLINABLE`). --- Is that what you mean Ben? My questions are 1. Why would you mark your function as `INLINABLE` rather than `RECURSIVE_SPECIALISABLE`? 2. What advantages does this pragma have over including the unfoldings of all polymorphic functions ? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/12463#comment:14 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler