summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoachim Breitner <mail@joachim-breitner.de>2018-03-19 15:20:57 -0400
committerJoachim Breitner <mail@joachim-breitner.de>2018-03-22 16:39:37 -0400
commit60563fdcbb40246ff3ed781cd704181b557a5400 (patch)
tree70fb084819305a30fb5509d255c30a8a7c9ac174
parentcbbb872db8a1c265bb13503d33af3de74f9c83fe (diff)
downloadhaskell-wip/T14951-blunt.tar.gz
Run SpecConstr twice, simplify in betweenwip/T14951-blunt
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
-rw-r--r--compiler/simplCore/SimplCore.hs2
1 files changed, 2 insertions, 0 deletions
diff --git a/compiler/simplCore/SimplCore.hs b/compiler/simplCore/SimplCore.hs
index 0905d4f84e..2524f496a9 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