[GHC] #13720: INLINE pragma semantics changed since 8.0.2

GHC ghc-devs at haskell.org
Thu May 18 16:47:52 UTC 2017


#13720: INLINE pragma semantics changed since 8.0.2
-------------------------------------+-------------------------------------
        Reporter:  mpickering        |                Owner:  (none)
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:  8.0.1
      Resolution:                    |             Keywords:
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------
Changes (by RyanGlScott):

 * cc: simonpj (added)


Comment:

 Commit 2effe18ab51d66474724d38b20e49cc1b8738f60 (The Early Inline Patch)
 caused this.

 From that commit, I see a Note was added, which might explain why this
 behavior was adopted:

 {{{#!hs
 {- Note [Inline in InitialPhase]
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 In GHC 8 and earlier we did not inline anything in the InitialPhase. But
 that is
 confusing for users because when they say INLINE they expect the function
 to inline
 right away.

 So now we do inlining immediately, even in the InitialPhase, assuming that
 the
 Id's Activation allows it.

 This is a surprisingly big deal. Compiler performance improved a lot
 when I made this change:

    perf/compiler/T5837.run            T5837 [stat too good] (normal)
    perf/compiler/parsing001.run       parsing001 [stat too good] (normal)
    perf/compiler/T12234.run           T12234 [stat too good] (optasm)
    perf/compiler/T9020.run            T9020 [stat too good] (optasm)
    perf/compiler/T3064.run            T3064 [stat too good] (normal)
    perf/compiler/T9961.run            T9961 [stat too good] (normal)
    perf/compiler/T13056.run           T13056 [stat too good] (optasm)
    perf/compiler/T9872d.run           T9872d [stat too good] (normal)
    perf/compiler/T783.run             T783 [stat too good] (normal)
    perf/compiler/T12227.run           T12227 [stat too good] (normal)
    perf/should_run/lazy-bs-alloc.run  lazy-bs-alloc [stat too good]
 (normal)
    perf/compiler/T1969.run            T1969 [stat too good] (normal)
    perf/compiler/T9872a.run           T9872a [stat too good] (normal)
    perf/compiler/T9872c.run           T9872c [stat too good] (normal)
    perf/compiler/T9872b.run           T9872b [stat too good] (normal)
    perf/compiler/T9872d.run           T9872d [stat too good] (normal)
 -}
 }}}

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


More information about the ghc-tickets mailing list