[project @ 2005-02-28 16:02:57 by simonpj]
[ghc-hetmet.git] / ghc / compiler / profiling / SCCfinal.lhs
index aca4961..97aedf2 100644 (file)
@@ -29,7 +29,7 @@ module SCCfinal ( stgMassageForProfiling ) where
 
 import StgSyn
 
-import CmdLineOpts     ( opt_AutoSccsOnIndividualCafs )
+import CmdLineOpts     ( DynFlags, opt_AutoSccsOnIndividualCafs )
 import CostCentre      -- lots of things
 import Id              ( Id )
 import Module          ( Module )
@@ -44,12 +44,13 @@ infixr 9 `thenMM`, `thenMM_`
 
 \begin{code}
 stgMassageForProfiling
-       :: Module                       -- module name
+       :: DynFlags
+       -> Module                       -- module name
        -> UniqSupply                   -- unique supply
        -> [StgBinding]                 -- input
        -> (CollectedCCs, [StgBinding])
 
-stgMassageForProfiling mod_name us stg_binds
+stgMassageForProfiling dflags mod_name us stg_binds
   = let
        ((local_ccs, extern_ccs, cc_stacks),
         stg_binds2)
@@ -100,7 +101,7 @@ stgMassageForProfiling mod_name us stg_binds
     do_top_rhs :: Id -> StgRhs -> MassageM StgRhs
 
     do_top_rhs binder (StgRhsClosure _ bi fv u srt [] (StgSCC cc (StgConApp con args)))
-      | not (isSccCountCostCentre cc) && not (isDllConApp con args)
+      | not (isSccCountCostCentre cc) && not (isDllConApp dflags con args)
        -- Trivial _scc_ around nothing but static data
        -- Eliminate _scc_ ... and turn into StgRhsCon
 
@@ -173,33 +174,14 @@ stgMassageForProfiling mod_name us stg_binds
        do_expr expr            `thenMM` \ expr' ->
        returnMM (StgSCC cc expr')
 
-    do_expr (StgCase expr fv1 fv2 bndr srt alts)
+    do_expr (StgCase expr fv1 fv2 bndr srt alt_type alts)
       = do_expr expr           `thenMM` \ expr' ->
-       do_alts alts            `thenMM` \ alts' ->
-       returnMM (StgCase expr' fv1 fv2 bndr srt alts')
+       mapMM do_alt alts       `thenMM` \ alts' ->
+       returnMM (StgCase expr' fv1 fv2 bndr srt alt_type alts')
       where
-       do_alts (StgAlgAlts tycon alts def) 
-         = mapMM do_alt alts   `thenMM` \ alts' ->
-           do_deflt def        `thenMM` \ def' ->
-           returnMM (StgAlgAlts tycon alts' def')
-         where
-           do_alt (id, bs, use_mask, e)
-             = do_expr e `thenMM` \ e' ->
-               returnMM (id, bs, use_mask, e')
-
-       do_alts (StgPrimAlts tycon alts def) 
-         = mapMM do_alt alts   `thenMM` \ alts' ->
-           do_deflt def        `thenMM` \ def' ->
-           returnMM (StgPrimAlts tycon alts' def')
-         where
-           do_alt (l,e)
-             = do_expr e `thenMM` \ e' ->
-               returnMM (l,e')
-
-       do_deflt StgNoDefault = returnMM StgNoDefault
-       do_deflt (StgBindDefault e) 
-         = do_expr e                   `thenMM` \ e' ->
-           returnMM (StgBindDefault e')
+       do_alt (id, bs, use_mask, e)
+         = do_expr e `thenMM` \ e' ->
+           returnMM (id, bs, use_mask, e')
 
     do_expr (StgLet b e)
        = do_let b e `thenMM` \ (b,e) ->