[commit: ghc] wip/T7994-calledArity: Add the usual flags -fcall-arity and -dddump-call-arity (f878fc2)
git at git.haskell.org
git at git.haskell.org
Fri Feb 7 14:26:19 UTC 2014
Repository : ssh://git@git.haskell.org/ghc
On branch : wip/T7994-calledArity
Link : http://ghc.haskell.org/trac/ghc/changeset/f878fc278f9a3a5e1407b0665eeeb285c07c2579/ghc
>---------------------------------------------------------------
commit f878fc278f9a3a5e1407b0665eeeb285c07c2579
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Wed Jan 29 15:09:09 2014 +0000
Add the usual flags -fcall-arity and -dddump-call-arity
>---------------------------------------------------------------
f878fc278f9a3a5e1407b0665eeeb285c07c2579
compiler/main/DynFlags.hs | 5 +++++
compiler/simplCore/CallArity.hs | 2 +-
compiler/simplCore/CoreMonad.lhs | 2 +-
compiler/simplCore/SimplCore.lhs | 7 +++++--
4 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/compiler/main/DynFlags.hs b/compiler/main/DynFlags.hs
index 615fdbb..b8aa2908 100644
--- a/compiler/main/DynFlags.hs
+++ b/compiler/main/DynFlags.hs
@@ -240,6 +240,7 @@ data DumpFlag
| Opt_D_dump_spec
| Opt_D_dump_prep
| Opt_D_dump_stg
+ | Opt_D_dump_call_arity
| Opt_D_dump_stranal
| Opt_D_dump_strsigs
| Opt_D_dump_tc
@@ -288,6 +289,7 @@ data GeneralFlag
| Opt_PrintExplicitKinds
-- optimisation opts
+ | Opt_CallArity
| Opt_Strictness
| Opt_LateDmdAnal
| Opt_KillAbsence
@@ -2322,6 +2324,7 @@ dynamic_flags = [
, Flag "ddump-spec" (setDumpFlag Opt_D_dump_spec)
, Flag "ddump-prep" (setDumpFlag Opt_D_dump_prep)
, Flag "ddump-stg" (setDumpFlag Opt_D_dump_stg)
+ , Flag "ddump-call-arity" (setDumpFlag Opt_D_dump_call_arity)
, Flag "ddump-stranal" (setDumpFlag Opt_D_dump_stranal)
, Flag "ddump-strsigs" (setDumpFlag Opt_D_dump_strsigs)
, Flag "ddump-tc" (setDumpFlag Opt_D_dump_tc)
@@ -2623,6 +2626,7 @@ fFlags = [
( "error-spans", Opt_ErrorSpans, nop ),
( "print-explicit-foralls", Opt_PrintExplicitForalls, nop ),
( "print-explicit-kinds", Opt_PrintExplicitKinds, nop ),
+ ( "call-arity", Opt_CallArity, nop ),
( "strictness", Opt_Strictness, nop ),
( "late-dmd-anal", Opt_LateDmdAnal, nop ),
( "specialise", Opt_Specialise, nop ),
@@ -2957,6 +2961,7 @@ optLevelFlags
-- in PrelRules
, ([1,2], Opt_DoEtaReduction)
, ([1,2], Opt_CaseMerge)
+ , ([1,2], Opt_CallArity)
, ([1,2], Opt_Strictness)
, ([1,2], Opt_CSE)
, ([1,2], Opt_FullLaziness)
diff --git a/compiler/simplCore/CallArity.hs b/compiler/simplCore/CallArity.hs
index 9a58a59..754c1f1 100644
--- a/compiler/simplCore/CallArity.hs
+++ b/compiler/simplCore/CallArity.hs
@@ -112,7 +112,7 @@ callArityAnal 0 int (Lam v e)
= (ae', Lam v e')
where
(ae, e') = callArityAnal 0 int e
- ae' = forgetTailCalls ae
+ ae' = forgetGoodCalls ae
-- We have a lambda that we are calling. decrease arity.
callArityAnal arity int (Lam v e)
= (ae, Lam v e')
diff --git a/compiler/simplCore/CoreMonad.lhs b/compiler/simplCore/CoreMonad.lhs
index 7c91505..b2f697a 100644
--- a/compiler/simplCore/CoreMonad.lhs
+++ b/compiler/simplCore/CoreMonad.lhs
@@ -334,7 +334,7 @@ coreDumpFlag CoreDoFloatInwards = Just Opt_D_verbose_core2core
coreDumpFlag (CoreDoFloatOutwards {}) = Just Opt_D_verbose_core2core
coreDumpFlag CoreLiberateCase = Just Opt_D_verbose_core2core
coreDumpFlag CoreDoStaticArgs = Just Opt_D_verbose_core2core
-coreDumpFlag CoreDoCallArity = Just Opt_D_verbose_core2core
+coreDumpFlag CoreDoCallArity = Just Opt_D_dump_call_arity
coreDumpFlag CoreDoStrictness = Just Opt_D_dump_stranal
coreDumpFlag CoreDoWorkerWrapper = Just Opt_D_dump_worker_wrapper
coreDumpFlag CoreDoSpecialising = Just Opt_D_dump_spec
diff --git a/compiler/simplCore/SimplCore.lhs b/compiler/simplCore/SimplCore.lhs
index 3183b11..436d1b6 100644
--- a/compiler/simplCore/SimplCore.lhs
+++ b/compiler/simplCore/SimplCore.lhs
@@ -115,6 +115,7 @@ getCoreToDo dflags
phases = simplPhases dflags
max_iter = maxSimplIterations dflags
rule_check = ruleCheck dflags
+ call_arity = gopt Opt_CallArity dflags
strictness = gopt Opt_Strictness dflags
full_laziness = gopt Opt_FullLaziness dflags
do_specialise = gopt Opt_Specialise dflags
@@ -259,8 +260,10 @@ getCoreToDo dflags
-- Don't stop now!
simpl_phase 0 ["main"] (max max_iter 3),
- CoreDoCallArity,
- simpl_phase 0 ["post-call-arity"] (max max_iter 3),
+ runWhen call_arity $ CoreDoPasses
+ [ CoreDoCallArity
+ , simpl_phase 0 ["post-call-arity"] max_iter
+ ],
runWhen strictness demand_analyser,
More information about the ghc-commits
mailing list