
#8276: Building Haddock documentation panics with perf build on x86_64 Linux ---------------------------------------+---------------------------------- Reporter: jstolarek | Owner: thoughtpolice Type: bug | Status: new Priority: highest | Milestone: 7.8.1 Component: Documentation | Version: 7.7 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: x86_64 (amd64) Type of failure: Compile-time crash | Difficulty: Unknown Test Case: | Blocked By: Blocking: | Related Tickets: ---------------------------------------+---------------------------------- Comment (by SimonHengel): Here is some (very simplified!) code from Doctest. In Haddock we have something similar. {{{ parse :: [String] -> IO [TypecheckedModule] parse args = bracket saveStaticFlagGlobals restoreStaticFlagGlobals $ \_ -> do args_ <- fst <$> parseStaticFlags (map noLoc args) runGhc (Just libdir) $ do (dynflags, files, _) <- getSessionDynFlags >>= (`parseDynamicFlags` args_) _ <- setSessionDynFlags dynflags mapM (`guessTarget` Nothing) (map unLoc files) >>= setTargets mods <- depanal [] False let sortedMods = flattenSCCs (topSortModuleGraph False mods Nothing) mapM (parseModule >=> typecheckModule >=> loadModule) sortedMods }}} (both Doctest and Haddock accept arbitrary GHC flags) If we can safely ignore static flags altogether, and change this to {{{ parse :: [String] -> IO [TypecheckedModule] parse args = runGhc (Just libdir) $ do (dynflags, files, _) <- getSessionDynFlags >>= (`parseDynamicFlags` map noLoc args) _ <- setSessionDynFlags dynflags mapM (`guessTarget` Nothing) (map unLoc files) >>= setTargets mods <- depanal [] False let sortedMods = flattenSCCs (topSortModuleGraph False mods Nothing) mapM (parseModule >=> typecheckModule >=> loadModule) sortedMods }}} then I have no need for {{{saveStaticFlagGlobals}}}/{{{restoreStaticFlagGlobals}}} anymore. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8276#comment:29 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler