[commit: ghc] wip/T14951-blunt: Run SpecConstr twice, simplify in between (60563fd)
git at git.haskell.org
git at git.haskell.org
Thu Mar 22 20:44:21 UTC 2018
Repository : ssh://git@git.haskell.org/ghc
On branch : wip/T14951-blunt
Link : http://ghc.haskell.org/trac/ghc/changeset/60563fdcbb40246ff3ed781cd704181b557a5400/ghc
>---------------------------------------------------------------
commit 60563fdcbb40246ff3ed781cd704181b557a5400
Author: Joachim Breitner <mail at joachim-breitner.de>
Date: Mon Mar 19 15:20:57 2018 -0400
Run SpecConstr twice, simplify in between
otherwise, it does not see that certain arguments are actually useful to
be specialized to. This gets x2n1 with loopification performance on par.
But even without loopification, there is definitely stuff to be gained here:
Nofib allocations
Benchmark name previous change now
nofib/allocs/event 129683224 + 8.44% 140627312 bytes
nofib/allocs/fulsom 243329632 - 7.83% 224287920 bytes
nofib/allocs/mandel2 922640 - 13.89% 794448 bytes
nofib/allocs/minimax 5371584 - 8.73% 4902576 bytes
nofib/allocs/parstof 3038584 - 3.63% 2928248 bytes
Nofib instruction
Benchmark name previous change now
nofib/instr/compress2 549006516 - 6.36% 514104497
nofib/instr/fulsom 755145483 - 3.41% 729394470
nofib/instr/ida 261218740 - 3.98% 250820469
nofib/instr/k-nucleotide 2140743692 - 3.97% 2055743369
nofib/instr/minimax 9099200 - 4.38% 8700706
>---------------------------------------------------------------
60563fdcbb40246ff3ed781cd704181b557a5400
compiler/simplCore/SimplCore.hs | 2 ++
1 file changed, 2 insertions(+)
diff --git a/compiler/simplCore/SimplCore.hs b/compiler/simplCore/SimplCore.hs
index 0905d4f..2524f49 100644
--- a/compiler/simplCore/SimplCore.hs
+++ b/compiler/simplCore/SimplCore.hs
@@ -348,6 +348,8 @@ getCoreToDo dflags
simpl_phase 0 ["between-core-spec"] max_iter,
+ runWhen spec_constr CoreDoSpecConstr,
+
maybe_rule_check (Phase 0),
runWhen late_specialise
More information about the ghc-commits
mailing list