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 ("cpGenModuleImportExportImpl: " ++ show n) (Map.lookup n (crsiModOffMp crsi)) ] , mieimplHsName2FldMp = expNmFldMp } }