Replace worthSplittingThunkDmd by worthSplittingArgDmd
authorJoachim Breitner <mail@joachim-breitner.de>
Thu, 16 Jan 2014 13:59:31 +0000 (13:59 +0000)
committerJoachim Breitner <mail@joachim-breitner.de>
Thu, 16 Jan 2014 16:49:19 +0000 (16:49 +0000)
these functions were almost equal, and neither validate nor nofib show
any difference replacing one by the other. So lets simplify this.
(This also prepares for a refactoring that will get rid of
worthSplittingArgDmd completely.)

compiler/basicTypes/Demand.lhs
compiler/stranal/WorkWrap.lhs

index b857ef5..3ebd724 100644 (file)
@@ -869,20 +869,6 @@ worthSplittingArgDmd dmd
     go (JD {strd=Str HeadStr, absd=Use _ UHead})     = True
 
     go _ = False
-
-worthSplittingThunkDmd :: Demand         -- Demand on the thunk
-                       -> Bool
-worthSplittingThunkDmd dmd
-  = go dmd
-  where
-        -- Split if the thing is unpacked
-    go (JD {strd=Str (SProd {}), absd=Use _ a})     = some_comp_used a
-    go (JD {strd=Str HeadStr, absd=Use _ UProd {}}) = True
-    go _                                            = False
-
-    some_comp_used Used       = True
-    some_comp_used (UProd _ ) = True
-    some_comp_used _          = False
 \end{code}
 
 Note [Worthy functions for Worker-Wrapper split]
index 3c7820c..5c24069 100644 (file)
@@ -261,7 +261,7 @@ tryWW dflags is_rec fn_id rhs
   = checkSize dflags new_fn_id rhs $
     splitFun dflags new_fn_id fn_info wrap_dmds res_info rhs
 
-  | is_thunk && (worthSplittingThunkDmd fn_dmd || returnsCPR res_info)
+  | is_thunk && (worthSplittingArgDmd fn_dmd || returnsCPR res_info)
        -- See Note [Thunk splitting]
   = ASSERT2( isNonRec is_rec, ppr new_fn_id )  -- The thunk must be non-recursive
     checkSize dflags new_fn_id rhs $