module UHC.Light.Compiler.EHC.CompilePhase.Common ( cpGenModuleImportExportImpl ) where import qualified Data.Map as Map import qualified Data.Set as Set import UHC.Util.Lens 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 45 "src/ehc/EHC/CompilePhase/Common.chs" #-} -- | Compute impl info for module codegen cpGenModuleImportExportImpl :: EHCCompileRunner m => HsName -> EHCompilePhaseT m ModuleImportExportImpl cpGenModuleImportExportImpl modNm = do { cr <- get ; cpMsg modNm VerboseDebug "cpGenModuleImportExportImpl" ; impNmL <- cpGenImportNameInfo 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 -- ; liftIO $ putStrLn $ "cpGenModuleImportExportImpl " ++ show impNmL -- ; liftIO $ putStrLn $ "cpGenModuleImportExportImpl ecuHSDeclImpNmS " ++ show (ecuHSDeclImpNmS ecu) -- ; liftIO $ putStrLn $ "cpGenModuleImportExportImpl ecuHIDeclImpNmS " ++ show (ecuHIDeclImpNmS ecu) -- ; liftIO $ putStrLn $ "cpGenModuleImportExportImpl ecuHIUsedImpNmS " ++ show (ecuHIUsedImpNmS ecu) -- ; liftIO $ putStrLn $ "cpGenModuleImportExportImpl modOffMp " ++ show modOffMp -- ecuHSDeclImpNmS ecu, ecuHIDeclImpNmS ecu, ecuHIUsedImpNmS ecu ; return $ emptyModuleImportExportImpl { mieimplUsedModNmL = if ecuIsMainMod ecu then [ m | (m,_) <- sortOnLazy 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 } }