
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://github.com/yav/graphmod/wiki). -- Joachim “nomeata” Breitner mail@joachim-breitner.de https://www.joachim-breitner.de/