Move Stg-specific code from DynFlags to SimplStg
authorÖmer Sinan Ağacan <omeragacan@gmail.com>
Wed, 2 Dec 2015 20:36:56 +0000 (14:36 -0600)
committerAustin Seipp <austin@well-typed.com>
Wed, 2 Dec 2015 20:37:52 +0000 (14:37 -0600)
Reviewed By: bgamari, austin

Differential Revision: https://phabricator.haskell.org/D1552

compiler/main/DynFlags.hs
compiler/simplStg/SimplStg.hs

index 98c61e7..7779732 100644 (file)
@@ -113,10 +113,6 @@ module DynFlags (
         -- ** DynFlags C compiler options
         picCCOpts, picPOpts,
 
-        -- * Configuration of the stg-to-stg passes
-        StgToDo(..),
-        getStgToDo,
-
         -- * Compiler configuration suitable for display to the user
         compilerInfo,
 
@@ -2028,28 +2024,6 @@ updOptLevel n dfs
    extra_gopts  = [ f | (ns,f) <- optLevelFlags, final_n `elem` ns ]
    remove_gopts = [ f | (ns,f) <- optLevelFlags, final_n `notElem` ns ]
 
--- -----------------------------------------------------------------------------
--- StgToDo:  abstraction of stg-to-stg passes to run.
-
-data StgToDo
-  = StgDoMassageForProfiling  -- should be (next to) last
-  -- There's also setStgVarInfo, but its absolute "lastness"
-  -- is so critical that it is hardwired in (no flag).
-  | D_stg_stats
-
-getStgToDo :: DynFlags -> [StgToDo]
-getStgToDo dflags
-  = todo2
-  where
-        stg_stats = gopt Opt_StgStats dflags
-
-        todo1 = if stg_stats then [D_stg_stats] else []
-
-        todo2 | WayProf `elem` ways dflags
-              = StgDoMassageForProfiling : todo1
-              | otherwise
-              = todo1
-
 {- **********************************************************************
 %*                                                                      *
                 DynFlags parser
index b8804a4..b8491fc 100644 (file)
@@ -87,3 +87,25 @@ stg2stg dflags module_name binds
             --         UniqueSupply for the next guy to use
             --         cost-centres to be declared/registered (specialised)
             --         add to description of what's happened (reverse order)
+
+-- -----------------------------------------------------------------------------
+-- StgToDo:  abstraction of stg-to-stg passes to run.
+
+-- | Optional Stg-to-Stg passes.
+data StgToDo
+  = StgDoMassageForProfiling  -- should be (next to) last
+  | D_stg_stats
+
+-- | Which optional Stg-to-Stg passes to run. Depends on flags, ways etc.
+getStgToDo :: DynFlags -> [StgToDo]
+getStgToDo dflags
+  = todo2
+  where
+        stg_stats = gopt Opt_StgStats dflags
+
+        todo1 = if stg_stats then [D_stg_stats] else []
+
+        todo2 | WayProf `elem` ways dflags
+              = StgDoMassageForProfiling : todo1
+              | otherwise
+              = todo1