Loosen the rules for instance declarations (Part 2)
[ghc-hetmet.git] / ghc / compiler / simplStg / StgStats.lhs
index e958122..a918739 100644 (file)
@@ -38,8 +38,7 @@ data CounterType
   | ConstructorApps
   | PrimitiveApps
   | LetNoEscapes
-  | AlgCases
-  | PrimCases
+  | StgCases
   | FreeVariables
   | ConstructorBinds Bool{-True<=>top-level-}
   | ReEntrantBinds   Bool{-ditto-}
@@ -88,8 +87,7 @@ showStgStats prog
     s ConstructorApps        = "ConstructorApps            "
     s PrimitiveApps          = "PrimitiveApps              "
     s LetNoEscapes           = "LetNoEscapes               "
-    s AlgCases               = "AlgCases                   "
-    s PrimCases                      = "PrimCases                  "
+    s StgCases               = "StgCases                   "
     s FreeVariables          = "FreeVariables              "
     s (ConstructorBinds True) = "ConstructorBinds_Top       "
     s (ReEntrantBinds True)   = "ReEntrantBinds_Top         "
@@ -117,10 +115,10 @@ statBinding :: Bool -- True <=> top-level; False <=> nested
            -> StgBinding
            -> StatEnv
 
-statBinding top (StgNonRec _srt b rhs)
+statBinding top (StgNonRec b rhs)
   = statRhs top (b, rhs)
 
-statBinding top (StgRec _srt pairs)
+statBinding top (StgRec pairs)
   = combineSEs (map (statRhs top) pairs)
 
 statRhs :: Bool -> (Id, StgRhs) -> StatEnv
@@ -128,7 +126,7 @@ statRhs :: Bool -> (Id, StgRhs) -> StatEnv
 statRhs top (b, StgRhsCon cc con args)
   = countOne (ConstructorBinds top)
 
-statRhs top (b, StgRhsClosure cc bi fv u args body)
+statRhs top (b, StgRhsClosure cc bi fv u _srt args body)
   = statExpr body                      `combineSE`
     countN FreeVariables (length fv)   `combineSE`
     countOne (
@@ -148,11 +146,11 @@ statRhs top (b, StgRhsClosure cc bi fv u args body)
 \begin{code}
 statExpr :: StgExpr -> StatEnv
 
-statExpr (StgApp _ _)      = countOne Applications
-statExpr (StgLit _)        = countOne Literals
-statExpr (StgConApp _ _)    = countOne ConstructorApps
-statExpr (StgPrimApp _ _ _) = countOne PrimitiveApps
-statExpr (StgSCC l e)      = statExpr e
+statExpr (StgApp _ _)    = countOne Applications
+statExpr (StgLit _)      = countOne Literals
+statExpr (StgConApp _ _)  = countOne ConstructorApps
+statExpr (StgOpApp _ _ _) = countOne PrimitiveApps
+statExpr (StgSCC l e)    = statExpr e
 
 statExpr (StgLetNoEscape lvs_whole lvs_rhss binds body)
   = statBinding False{-not top-level-} binds   `combineSE`
@@ -163,24 +161,12 @@ statExpr (StgLet binds body)
   = statBinding False{-not top-level-} binds   `combineSE`
     statExpr body
 
-statExpr (StgCase expr lve lva bndr srt alts)
+statExpr (StgCase expr lve lva bndr srt alt_type alts)
   = statExpr expr      `combineSE`
+    stat_alts alts     `combineSE`
+    countOne StgCases
+  where
     stat_alts alts
-    where
-      stat_alts (StgAlgAlts ty alts def)
        = combineSEs (map statExpr [ e | (_,_,_,e) <- alts ])
-                                       `combineSE`
-         stat_deflt def                `combineSE`
-         countOne AlgCases
-
-      stat_alts (StgPrimAlts ty alts def)
-       = combineSEs (map statExpr [ e | (_,e) <- alts ])
-                                       `combineSE`
-         stat_deflt def                `combineSE`
-         countOne PrimCases
-
-      stat_deflt StgNoDefault = emptySE
-
-      stat_deflt (StgBindDefault expr) = statExpr expr
 \end{code}