
#9370: unfolding info as seen when building a module depends on flags in a previously-compiled module -------------------------------------+------------------------------------- Reporter: carter | Owner: 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 bgamari): Thanks Richard! I hope we see you again when you have time for some hacking. I had a look at this and the result is Phab:D2609. There is a bit more to it that comment:41 suggests. In addition to what I describe there I also needed to track down a few places outside of the simplifier where unfoldings were being force. The first place I encountered was `OccurAnalyse`, which wants to look a free variables of unfoldings. There are two ways I can envision fixing this, * Have occurrence analysis pretend there are no unfoldings if `-fignore- interface-pragmas` is passed. Note that this is a bit of a lie: we would be ignoring all unfoldings, not just those from interface files (since we can't tell the difference between the two under the current scheme). * Skip occurrence analysis altogether. If we are going to disable inlining entirely then (I think) it serves little purpose. Simon, perhaps you could weigh in here? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9370#comment:43 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler