[GHC] #9370: unfolding info as seen when building a module depends on flags in a previously-compiled module

GHC ghc-devs at haskell.org
Mon Sep 26 21:30:05 UTC 2016


#9370: unfolding info as seen when building a module depends on flags in a
previously-compiled module
-------------------------------------+-------------------------------------
        Reporter:  carter            |                Owner:  richardfung
            Type:  bug               |               Status:  new
        Priority:  high              |            Milestone:  8.2.1
       Component:  Compiler          |              Version:  7.8.3
      Resolution:                    |             Keywords:  newcomer,
                                     |  Inlining
Operating System:  Unknown/Multiple  |         Architecture:
 Type of failure:  Compile-time      |  Unknown/Multiple
  performance bug                    |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:  #8635             |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by richardfung):

 There has been some discussion on the code review:
 https://phabricator.haskell.org/D2485

 To summarize, turning off all inlining with -O0 and always reading in
 interface pragmas causes a performance regression.

 Simon Marlow has suggested two other solutions:

 "Lazily load the pragma info, so that it doesn't cost anything if we don't
 use it. The simplifier should use -fignore-interface-pragmas to decide
 whether to use the pragma info from external Ids or not.

 Predict whether we'll need the pragma info by determining whether *any*
 module in the current set will be compiled with optimisation turned on.
 This info is available after we've done the downsweep in the compilation
 manager. This approach doesn't really work in general because a user of
 the GHC API might load more modules later with -O and we can't predict
 that, but it fixes the common case."

 I would rather do things the right way and thus try my hand at the first
 solution. Is this something that is still suitable for a newcomer?

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


More information about the ghc-tickets mailing list