[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