[project @ 1999-04-26 16:06:27 by simonm]
[ghc-hetmet.git] / ghc / compiler / codeGen / CgConTbls.lhs
index 6e4a149..99d286e 100644 (file)
@@ -12,7 +12,7 @@ import AbsCSyn
 import CgMonad
 
 import StgSyn          ( SRT(..) )
-import AbsCUtils       ( mkAbstractCs )
+import AbsCUtils       ( mkAbstractCs, mkAbsCStmts )
 import CgTailCall      ( performReturn, mkStaticAlgReturnCode )
 import CLabel          ( mkConEntryLabel, mkStaticClosureLabel )
 import ClosureInfo     ( layOutStaticClosure, layOutDynCon,
@@ -20,11 +20,11 @@ import ClosureInfo  ( layOutStaticClosure, layOutDynCon,
                        )
 import CostCentre      ( dontCareCCS )
 import FiniteMap       ( fmToList, FiniteMap )
-import DataCon         ( DataCon, dataConTag, dataConName, dataConRawArgTys )
+import DataCon         ( DataCon, dataConName, dataConRawArgTys )
 import Const           ( Con(..) )
 import Name            ( getOccString )
 import PrimRep         ( getPrimRepSize, PrimRep(..) )
-import TyCon           ( tyConDataCons, TyCon )
+import TyCon           ( tyConDataCons, isEnumerationTyCon, TyCon )
 import Type            ( typePrimRep, Type )
 import BasicTypes      ( TopLevelFlag(..) )
 import Outputable      
@@ -96,7 +96,13 @@ genStaticConBits comp_info gen_tycons tycon_specs
   where
     gen_for_tycon :: TyCon -> AbstractC
     gen_for_tycon tycon
-      = mkAbstractCs (map (genConInfo comp_info tycon) (tyConDataCons tycon))
+      = mkAbstractCs (map (genConInfo comp_info tycon) (tyConDataCons tycon)) 
+       `mkAbsCStmts` (
+         -- after the con decls, so we don't need to declare the constructor labels
+         if (isEnumerationTyCon tycon)
+           then CClosureTbl tycon
+           else AbsCNop
+       )
 \end{code}
 
 %************************************************************************
@@ -142,8 +148,6 @@ genConInfo comp_info tycon data_con
 
     static_code  = CClosureInfoAndCode static_ci body Nothing con_descr
 
-    tag                 = dataConTag data_con
-
     cost_centre  = mkCCostCentreStack dontCareCCS -- not worried about static data costs
 
     -- For zero-arity data constructors, or, more accurately,