uhc-light-1.1.7.2: src/UHC/Light/Compiler/EHC/CompilePhase/Common.hs
module UHC.Light.Compiler.EHC.CompilePhase.Common
( cpGenModuleImportExportImpl )
where
import qualified Data.Map as Map
import qualified Data.Set as Set
import qualified UHC.Util.FastSeq as Seq
import Control.Monad.State
import UHC.Light.Compiler.EHC.Common
import UHC.Light.Compiler.Base.Optimize
import UHC.Light.Compiler.CodeGen.RefGenerator
import UHC.Light.Compiler.EHC.CompileRun
import UHC.Light.Compiler.EHC.CompilePhase.Module
import UHC.Light.Compiler.EHC.CompileUnit
import qualified UHC.Light.Compiler.Core.ToGrin as Core2GrSem
import UHC.Light.Compiler.CodeGen.ModuleImportExportImpl
{-# LINE 43 "src/ehc/EHC/CompilePhase/Common.chs" #-}
-- | Compute impl info for module codegen
cpGenModuleImportExportImpl :: HsName -> EHCompilePhase ModuleImportExportImpl
cpGenModuleImportExportImpl modNm
= do { cr <- get
; cpMsg modNm VerboseDebug "cpGenModuleImportExportImpl"
; impNmL <- cpGenImpNmInfo modNm
; let (ecu,crsi,opts,fp) = crBaseInfo modNm cr
isWholeProg = ehcOptOptimizationScope opts > OptimizationScope_PerModule
expNmFldMp | ecuIsMainMod ecu = Map.empty
| otherwise = crsiExpNmOffMp modNm crsi
modOffMp | isWholeProg = Map.filterWithKey (\n _ -> n == modNm) $ crsiModOffMp crsi
| otherwise = crsiModOffMp crsi
-- ; lift $ putStrLn $ "cpGenModuleImportExportImpl " ++ show impNmL
-- ; lift $ putStrLn $ "cpGenModuleImportExportImpl ecuHSDeclImpNmS " ++ show (ecuHSDeclImpNmS ecu)
-- ; lift $ putStrLn $ "cpGenModuleImportExportImpl ecuHIDeclImpNmS " ++ show (ecuHIDeclImpNmS ecu)
-- ; lift $ putStrLn $ "cpGenModuleImportExportImpl ecuHIUsedImpNmS " ++ show (ecuHIUsedImpNmS ecu)
-- ; lift $ putStrLn $ "cpGenModuleImportExportImpl modOffMp " ++ show modOffMp
-- ecuHSDeclImpNmS ecu, ecuHIDeclImpNmS ecu, ecuHIUsedImpNmS ecu
; return $ emptyModuleImportExportImpl
{ mieimplLamMp = Core2GrSem.lamMp_Inh_CodeAGItf $ crsiCoreInh crsi
, mieimplUsedModNmL = if ecuIsMainMod ecu then [ m | (m,_) <- sortOn snd $ Map.toList $ Map.map fst modOffMp ] else []
, mieimplHsName2FldMpMp = Map.fromList
[ (n,(o,mp))
| (n,o) <- refGen 0 1 impNmL
, let (_,mp) = panicJust ("cpGenGrinGenInfo: " ++ show n) (Map.lookup n (crsiModOffMp crsi))
]
, mieimplHsName2FldMp = expNmFldMp
}
}