Repository : ssh://darcs.haskell.org//srv/darcs/ghc On branch : supercompiler
http://hackage.haskell.org/trac/ghc/changeset/16d25e3ed92fdfe2ee4f7cb64825738cad9eb808 >--------------------------------------------------------------- commit 16d25e3ed92fdfe2ee4f7cb64825738cad9eb808 Author: Max Bolingbroke <batterseapo...@hotmail.com> Date: Mon Jan 16 16:23:40 2012 +0000 Put case-alt refinement under flag control since it may be causing even more divergence in Main5 >--------------------------------------------------------------- compiler/supercompile/Supercompile/Drive/Split.hs | 4 ++-- compiler/supercompile/Supercompile/StaticFlags.hs | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/compiler/supercompile/Supercompile/Drive/Split.hs b/compiler/supercompile/Supercompile/Drive/Split.hs index cc9dee0..73cb876 100644 --- a/compiler/supercompile/Supercompile/Drive/Split.hs +++ b/compiler/supercompile/Supercompile/Drive/Split.hs @@ -1090,8 +1090,8 @@ splitStackFrame ctxt_ids ids kf scruts bracketed_hole -- 1. Filter out any branches of the case which we know are impossible due to type refinement -- 2. Turn any remaining default cases into explicit constructors if possible (helps positive information propagation) alts = [ (coreAltConToAltCon altcon xs, e) - | (altcon, xs, e) <- thirdOf3 (filterAlts (repeat wildCardKey) (idType x') [] - [(altcon', xs, e) | (altcon, e) <- unfiltered_alts, let (altcon', xs) = altConToCoreAltCon altcon]) + | (altcon, xs, e) <- (if rEFINE_ALTS then thirdOf3 . filterAlts (repeat wildCardKey) (idType x') [] else id) + [(altcon', xs, e) | (altcon, e) <- unfiltered_alts, let (altcon', xs) = altConToCoreAltCon altcon] ] (alt_cons, alt_es) = unzip alts diff --git a/compiler/supercompile/Supercompile/StaticFlags.hs b/compiler/supercompile/Supercompile/StaticFlags.hs index 282b758..d436137 100644 --- a/compiler/supercompile/Supercompile/StaticFlags.hs +++ b/compiler/supercompile/Supercompile/StaticFlags.hs @@ -25,6 +25,10 @@ eAGER_SPLIT_VALUES :: Bool eAGER_SPLIT_VALUES = iNSTANCE_MATCHING -- For correctness given that we do instance matching --eAGER_SPLIT_VALUES = False +rEFINE_ALTS :: Bool +--rEFINE_ALTS = True +rEFINE_ALTS = False + dEEDS :: Bool dEEDS = "--deeds" `elem` aRGS --dEEDS = True _______________________________________________ Cvs-ghc mailing list Cvs-ghc@haskell.org http://www.haskell.org/mailman/listinfo/cvs-ghc