import StgSyn
import CgMonad
import AbsCSyn
-import CLabel ( CLabel, mkSRTLabel, mkClosureLabel,
- mkModuleInitLabel, labelDynamic )
+import CLabel ( CLabel, mkSRTLabel, mkClosureLabel, mkModuleInitLabel )
import PprAbsC ( dumpRealC )
import AbsCUtils ( mkAbstractCs, flattenAbsC )
opt_SccProfilingOn, opt_EnsureSplittableC )
import CostCentre ( CostCentre, CostCentreStack )
import Id ( Id, idName )
-import Module ( Module, moduleString, moduleName,
- ModuleName )
-import PrimRep ( getPrimRepSize, PrimRep(..) )
-import Type ( Type )
+import Module ( Module )
+import PrimRep ( PrimRep(..) )
import TyCon ( TyCon, isDataTyCon )
-import Class ( Class, classTyCon )
import BasicTypes ( TopLevelFlag(..) )
import UniqSupply ( mkSplitUniqSupply )
import ErrUtils ( dumpIfSet_dyn )
-import Util
import Panic ( assertPanic )
\end{code}
[CostCentre], -- "extern" cost-centres needing declaring
[CostCentreStack]) -- Pre-defined "singleton" cost centre stacks
-> [Id] -- foreign-exported binders
- -> [TyCon] -> [Class] -- Local tycons and classes
+ -> [TyCon] -- Local tycons, including ones from classes
-> [(StgBinding,[Id])] -- Bindings to convert, with SRTs
-> IO AbstractC -- Output
codeGen dflags mod_name imported_modules cost_centre_info fe_binders
- tycons classes stg_binds
+ tycons stg_binds
= mkSplitUniqSupply 'f' >>= \ fl_uniqs -> -- absC flattener
let
datatype_stuff = genStaticConBits cinfo data_tycons
return flat_abstractC
where
- data_tycons = filter isDataTyCon (tycons ++ map classTyCon classes)
- -- Generate info tables for the data constrs arising
- -- from class decls as well
+ data_tycons = filter isDataTyCon tycons
maybe_split = if opt_EnsureSplittableC
then CSplitMarker