[GHC] #12463: SPECIALIZABLE pragma?

GHC ghc-devs at haskell.org
Wed Sep 28 13:05:51 UTC 2016


#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 bgamari):

 > Is that what you mean Ben? My questions are

 > 1. Why would you mark your function as `INLINABLE` rather than
 `RECURSIVE_SPECIALISABLE`?

 `RECURSIVE_SPECIALISABLE` carries a potentially significant cost above
 `INLINEABLE` as it may produce many more inlinings which we have to later
 read and decide whether to use at every callsite.

 > 2. What advantages does this pragma have over including the unfoldings
 of all polymorphic functions?

 This is a good question. It depends upon whether we feel that the costs
 above are large enough to warrant yet another pragma. Frankly, users
 complain a great deal about compiler performance and one of the reasons
 for this is that GHC applies all of its might to all of the code it
 compiles with `-O`. In light of this it seems like giving GHC more
 information about where it should be focusing its attention may be
 worthwhile.

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/12463#comment:15>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list