[GHC] #13090: Expose all unfoldings of overloaded functions by default

GHC ghc-devs at haskell.org
Mon Jan 9 09:22:50 UTC 2017


#13090: Expose all unfoldings of overloaded functions by default
-------------------------------------+-------------------------------------
           Reporter:  mpickering     |             Owner:
               Type:  bug            |            Status:  new
           Priority:  normal         |         Milestone:  8.2.1
          Component:  Compiler       |           Version:  8.0.1
           Keywords:                 |  Operating System:  Unknown/Multiple
       Architecture:                 |   Type of failure:  None/Unknown
  Unknown/Multiple                   |
          Test Case:                 |        Blocked By:
           Blocking:                 |   Related Tickets:
Differential Rev(s):  Phab:D2929     |         Wiki Page:
-------------------------------------+-------------------------------------
 Users expect their overloaded functions to be specialised at call sites,
 however, this is only the case if they are either lucky and GHC chooses to
 include the unfolding or they mark their definition with an INLINABLE
 pragma.
 This leads to library authors marking all their functions with INLINABLE
 (or
 more accurately INLINE) so they ensure that downstream consumers pay no
 cost
 for their abstraction.

 A more sensible default is to do this job for the library author and give
 more
 predictable guarantees about specialisation.

 Empirically, I compiled a selection of 1150 packages with (a similar)
 patch applied. The total size of the interface files before the patch was
 519mb and after 634mb. On modern machines, I think this increase is
 justified for the result.

 This is a ticket to track the progress of D2929.

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


More information about the ghc-tickets mailing list