Ben Gamari pushed to branch wip/T26110 at Glasgow Haskell Compiler / GHC

Commits:

2 changed files:

Changes:

  • compiler/GHC/Tc/Module.hs
    ... ... @@ -211,7 +211,7 @@ tcRnModule hsc_env mod_sum save_rn_syntax
    211 211
      | RealSrcSpan real_loc _ <- loc
    
    212 212
      = withTiming logger
    
    213 213
                   (text "Renamer/typechecker"<+>brackets (ppr this_mod))
    
    214
    -              (const ()) $
    
    214
    +              (maybe () seqTcGblEnv . snd) $
    
    215 215
        initTc hsc_env hsc_src save_rn_syntax this_mod real_loc $
    
    216 216
               withTcPlugins hsc_env $
    
    217 217
               withDefaultingPlugins hsc_env $
    

  • compiler/GHC/Tc/Types.hs
    ... ... @@ -30,7 +30,7 @@ module GHC.Tc.Types(
    30 30
     
    
    31 31
             -- The environment types
    
    32 32
             Env(..),
    
    33
    -        TcGblEnv(..), TcLclEnv(..), modifyLclCtxt, TcLclCtxt(..),
    
    33
    +        TcGblEnv(..), seqTcGblEnv, TcLclEnv(..), modifyLclCtxt, TcLclCtxt(..),
    
    34 34
             setLclEnvTcLevel, getLclEnvTcLevel,
    
    35 35
             setLclEnvLoc, getLclEnvLoc, lclEnvInGeneratedCode,
    
    36 36
             IfGblEnv(..), IfLclEnv(..),
    
    ... ... @@ -171,10 +171,11 @@ import GHC.Unit.Module.Deps
    171 171
     import GHC.Unit.Module.ModDetails
    
    172 172
     
    
    173 173
     import GHC.Utils.Error
    
    174
    -import GHC.Utils.Outputable
    
    175 174
     import GHC.Utils.Fingerprint
    
    176
    -import GHC.Utils.Panic
    
    177 175
     import GHC.Utils.Logger
    
    176
    +import GHC.Utils.Misc ( seqList )
    
    177
    +import GHC.Utils.Outputable
    
    178
    +import GHC.Utils.Panic
    
    178 179
     
    
    179 180
     import GHC.Builtin.Names ( isUnboundName )
    
    180 181
     
    
    ... ... @@ -697,6 +698,19 @@ data TcGblEnv
    697 698
             -- ^ See Note [Generating fresh names for FFI wrappers]
    
    698 699
         }
    
    699 700
     
    
    701
    +-- | Force the final result bits of a 'TcGblEnv'. This is used
    
    702
    +-- to
    
    703
    +seqTcGblEnv :: TcGblEnv -> ()
    
    704
    +seqTcGblEnv env =
    
    705
    +    tcg_type_env env `seq`
    
    706
    +    tcg_ann_env env `seq`
    
    707
    +    maybe () (`seqList` ()) (tcg_rn_exports env) `seq`
    
    708
    +    seqList (tcg_import_decls env) `seq`
    
    709
    +    seqList (tcg_merged env) `seq`
    
    710
    +    maybe () (`seq` ()) (tcg_rn_decls env) `seq`
    
    711
    +    tcg_dus env `seq`
    
    712
    +    ()
    
    713
    +
    
    700 714
     -- NB: topModIdentity, not topModSemantic!
    
    701 715
     -- Definition sites of orphan identities will be identity modules, not semantic
    
    702 716
     -- modules.