diff options
author | Joachim Breitner <mail@joachim-breitner.de> | 2018-03-19 15:20:57 -0400 |
---|---|---|
committer | Joachim Breitner <mail@joachim-breitner.de> | 2018-03-22 16:39:37 -0400 |
commit | 60563fdcbb40246ff3ed781cd704181b557a5400 (patch) | |
tree | 70fb084819305a30fb5509d255c30a8a7c9ac174 /compiler/simplCore/SimplCore.hs | |
parent | cbbb872db8a1c265bb13503d33af3de74f9c83fe (diff) | |
download | haskell-60563fdcbb40246ff3ed781cd704181b557a5400.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
Diffstat (limited to 'compiler/simplCore/SimplCore.hs')
-rw-r--r-- | compiler/simplCore/SimplCore.hs | 2 |
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 |