
I agree. Both of these code paths go through initTcForLookup which is massive overkill, as the comment with `TcEnv.lookupGlobal` says. There's clearly a ToDo here to strip off the redundant stuff and do a minimal lookup. Would you like to make a ticket? Simon | -----Original Message----- | From: ghc-devs [mailto:ghc-devs-bounces@haskell.org] On Behalf Of | Joachim Breitner | Sent: 24 October 2017 16:40 | To: ghc-devs@haskell.org | Subject: Simplify.hs depends on typechecker | | Hi, | | while rebuilding Simplify.o only I noticed that all of the type | checker, and HsSyn stuff, and renamer stuff, and so needed to be | rebuilt, which I found strange. | | After a little investigation, it seems that the simplifier depends on | CoreMonad, and that pulls some very few type-checker related things: | | 1. | import TcRnMonad ( initTcForLookup ) | import {-# SOURCE #-} TcSplice ( lookupThName_maybe ) | | for | | thNameToGhcName :: TH.Name -> CoreM (Maybe Name) | thNameToGhcName th_name = do | hsc_env <- getHscEnv | liftIO $ initTcForLookup hsc_env (lookupThName_maybe th_name) | | which is not even used in GHC, but only in GHC Plugins, so this could | probably be moved to a separate module pulled in by GhcPlugins.hs | | 2. | | import TcEnv ( lookupGlobal ) | | for | | instance MonadThings CoreM where | lookupThing name = do { hsc_env <- getHscEnv | ; liftIO $ lookupGlobal hsc_env name } | | This might be a bit harder to disentangle. But if successful, it would | probably make building GHC in parallel quite a bit faster. And it just | seems strange to me that the Core-to-Core code should depend on the | type checker… | | | I’m sending this out there in case someone has dug in that direction | before and has insights to share. | | | Greetings, | Joachim | | (Attached is a transitively reduced dependency graph of Simplify.hs, | created using Iavor’s | https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgithub | .com%2Fyav%2Fgraphmod%2Fwiki&data=02%7C01%7Csimonpj%40microsoft.com%7Cb | 16c817556de4d55d74c08d51af5a8cd%7C72f988bf86f141af91ab2d7cd011db47%7C1% | 7C0%7C636444565247573129&sdata=oHpA%2F%2BHGyc0mHv%2FWj3nzGBiJCM2ufriryF | oZYNHSjqk%3D&reserved=0). | | | -- | Joachim “nomeata” Breitner | mail@joachim-breitner.de | | https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.jo | achim- | breitner.de%2F&data=02%7C01%7Csimonpj%40microsoft.com%7Cb16c817556de4d5 | 5d74c08d51af5a8cd%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C63644456 | 5247583137&sdata=wO14DxiOaXUOx59N22YoS%2FoC2%2Bi4IEp3bNnB4Dli12U%3D&res | erved=0