
#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 bgamari):
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?
I'm happy to hear that you are willing to give it another go. Regarding Simon's suggestion, I suspect you could pull it off, although it will naturally require some learning. You'll likely want to start reading `compiler/iface/LoadIface.hs`. In particular pay attention to the `ignore_prags` argument to `loadDecl`. This is how we currently tell the typechecker not to bother typechecking unfoldings. You will likely want to remove this; instead you want to fork off typechecking as an interleaved computation with `TcRnMonad.forkM`. Then just make sure that there are no unconditional strictness demands on the pragma field and add a condition on `-fignore-interface-pragmas` to ignore the presence of the pragmas when necessary. As always, let me know if I can be of help, especially if any of the above seems incorrect; it is largely the result of a cursory glance over the relevant code and I could have easily missed something. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9370#comment:41 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler