diff options
author | Ryan Scott <ryan.gl.scott@gmail.com> | 2016-06-18 12:23:12 +0200 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2016-06-19 00:27:06 +0200 |
commit | 9649fc0ae45e006c2ed54cc5ea2414158949fadb (patch) | |
tree | fcc11b8f17032b950fcf2af043f05d8f3232fcf1 /testsuite/tests | |
parent | 270d545d557352d5f264247987ee8388f0812187 (diff) | |
download | haskell-9649fc0ae45e006c2ed54cc5ea2414158949fadb.tar.gz |
Refactor derived Generic instances to reduce allocations
Previously, derived implementations of `to`/`from` in `Generic`
instances were wastefully putting extra `M1`s in every case, which led
to an O(n) increase in the number of coercions, resulting in a slowdown
during the typechecker phase.
This factors out the common `M1` in every case of a `to`/`from`
definition so that the typechecker has far fewer coercions to deal with.
For a datatype with 300 constructors, this change has been observed to
save almost 3 seconds of compilation time.
This is one step towards coming up with a solution for #5642.
Test Plan: ./validate
Reviewers: hvr, austin, simonpj, bgamari
Reviewed By: bgamari
Subscribers: basvandijk, carter, thomie, osa1
Differential Revision: https://phabricator.haskell.org/D2304
GHC Trac Issues: #5642
Diffstat (limited to 'testsuite/tests')
-rw-r--r-- | testsuite/tests/generics/GenDerivOutput.stderr | 154 | ||||
-rw-r--r-- | testsuite/tests/generics/GenDerivOutput1_0.stderr | 37 | ||||
-rw-r--r-- | testsuite/tests/generics/GenDerivOutput1_1.stderr | 280 | ||||
-rw-r--r-- | testsuite/tests/generics/T10604/T10604_deriving.stderr | 253 | ||||
-rw-r--r-- | testsuite/tests/perf/compiler/T5642.hs | 402 | ||||
-rw-r--r-- | testsuite/tests/perf/compiler/all.T | 5 | ||||
-rw-r--r-- | testsuite/tests/perf/haddock/all.T | 5 |
7 files changed, 589 insertions, 547 deletions
diff --git a/testsuite/tests/generics/GenDerivOutput.stderr b/testsuite/tests/generics/GenDerivOutput.stderr index de11f431e9..2226783029 100644 --- a/testsuite/tests/generics/GenDerivOutput.stderr +++ b/testsuite/tests/generics/GenDerivOutput.stderr @@ -2,92 +2,96 @@ ==================== Derived instances ==================== Derived instances: instance GHC.Generics.Generic (GenDerivOutput.List a) where - GHC.Generics.from GenDerivOutput.Nil + GHC.Generics.from x = GHC.Generics.M1 - (GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1)) - GHC.Generics.from (GenDerivOutput.Cons g1 g2) - = GHC.Generics.M1 - (GHC.Generics.R1 - (GHC.Generics.M1 - ((GHC.Generics.:*:) - (GHC.Generics.M1 (GHC.Generics.K1 g1)) - (GHC.Generics.M1 (GHC.Generics.K1 g2))))) - GHC.Generics.to - (GHC.Generics.M1 (GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1))) - = GenDerivOutput.Nil - GHC.Generics.to - (GHC.Generics.M1 (GHC.Generics.R1 (GHC.Generics.M1 ((GHC.Generics.:*:) (GHC.Generics.M1 (GHC.Generics.K1 g1)) - (GHC.Generics.M1 (GHC.Generics.K1 g2)))))) - = GenDerivOutput.Cons g1 g2 - + (case x of { + GenDerivOutput.Nil + -> GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1) + GenDerivOutput.Cons g1 g2 + -> GHC.Generics.R1 + (GHC.Generics.M1 + ((GHC.Generics.:*:) + (GHC.Generics.M1 (GHC.Generics.K1 g1)) + (GHC.Generics.M1 (GHC.Generics.K1 g2)))) }) + GHC.Generics.to (GHC.Generics.M1 x) + = case x of { + GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1) + -> GenDerivOutput.Nil + GHC.Generics.R1 (GHC.Generics.M1 ((GHC.Generics.:*:) (GHC.Generics.M1 (GHC.Generics.K1 g1)) + (GHC.Generics.M1 (GHC.Generics.K1 g2)))) + -> GenDerivOutput.Cons g1 g2 } + instance GHC.Generics.Generic1 GenDerivOutput.List where - GHC.Generics.from1 GenDerivOutput.Nil - = GHC.Generics.M1 - (GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1)) - GHC.Generics.from1 (GenDerivOutput.Cons g1 g2) + GHC.Generics.from1 x = GHC.Generics.M1 - (GHC.Generics.R1 - (GHC.Generics.M1 - ((GHC.Generics.:*:) - (GHC.Generics.M1 (GHC.Generics.Par1 g1)) - (GHC.Generics.M1 (GHC.Generics.Rec1 g2))))) - GHC.Generics.to1 - (GHC.Generics.M1 (GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1))) - = GenDerivOutput.Nil - GHC.Generics.to1 - (GHC.Generics.M1 (GHC.Generics.R1 (GHC.Generics.M1 ((GHC.Generics.:*:) (GHC.Generics.M1 g1) - (GHC.Generics.M1 g2))))) - = GenDerivOutput.Cons - (GHC.Generics.unPar1 g1) (GHC.Generics.unRec1 g2) - + (case x of { + GenDerivOutput.Nil + -> GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1) + GenDerivOutput.Cons g1 g2 + -> GHC.Generics.R1 + (GHC.Generics.M1 + ((GHC.Generics.:*:) + (GHC.Generics.M1 (GHC.Generics.Par1 g1)) + (GHC.Generics.M1 (GHC.Generics.Rec1 g2)))) }) + GHC.Generics.to1 (GHC.Generics.M1 x) + = case x of { + GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1) + -> GenDerivOutput.Nil + GHC.Generics.R1 (GHC.Generics.M1 ((GHC.Generics.:*:) (GHC.Generics.M1 g1) + (GHC.Generics.M1 g2))) + -> GenDerivOutput.Cons + (GHC.Generics.unPar1 g1) (GHC.Generics.unRec1 g2) } + instance GHC.Base.Functor GenDerivOutput.List where GHC.Base.fmap f GenDerivOutput.Nil = GenDerivOutput.Nil GHC.Base.fmap f (GenDerivOutput.Cons a1 a2) = GenDerivOutput.Cons (f a1) (GHC.Base.fmap f a2) - + instance GHC.Generics.Generic (GenDerivOutput.Rose a) where - GHC.Generics.from GenDerivOutput.Empty + GHC.Generics.from x = GHC.Generics.M1 - (GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1)) - GHC.Generics.from (GenDerivOutput.Rose g1 g2) - = GHC.Generics.M1 - (GHC.Generics.R1 - (GHC.Generics.M1 - ((GHC.Generics.:*:) - (GHC.Generics.M1 (GHC.Generics.K1 g1)) - (GHC.Generics.M1 (GHC.Generics.K1 g2))))) - GHC.Generics.to - (GHC.Generics.M1 (GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1))) - = GenDerivOutput.Empty - GHC.Generics.to - (GHC.Generics.M1 (GHC.Generics.R1 (GHC.Generics.M1 ((GHC.Generics.:*:) (GHC.Generics.M1 (GHC.Generics.K1 g1)) - (GHC.Generics.M1 (GHC.Generics.K1 g2)))))) - = GenDerivOutput.Rose g1 g2 - + (case x of { + GenDerivOutput.Empty + -> GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1) + GenDerivOutput.Rose g1 g2 + -> GHC.Generics.R1 + (GHC.Generics.M1 + ((GHC.Generics.:*:) + (GHC.Generics.M1 (GHC.Generics.K1 g1)) + (GHC.Generics.M1 (GHC.Generics.K1 g2)))) }) + GHC.Generics.to (GHC.Generics.M1 x) + = case x of { + GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1) + -> GenDerivOutput.Empty + GHC.Generics.R1 (GHC.Generics.M1 ((GHC.Generics.:*:) (GHC.Generics.M1 (GHC.Generics.K1 g1)) + (GHC.Generics.M1 (GHC.Generics.K1 g2)))) + -> GenDerivOutput.Rose g1 g2 } + instance GHC.Generics.Generic1 GenDerivOutput.Rose where - GHC.Generics.from1 GenDerivOutput.Empty + GHC.Generics.from1 x = GHC.Generics.M1 - (GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1)) - GHC.Generics.from1 (GenDerivOutput.Rose g1 g2) - = GHC.Generics.M1 - (GHC.Generics.R1 - (GHC.Generics.M1 - ((GHC.Generics.:*:) - (GHC.Generics.M1 (GHC.Generics.Par1 g1)) - (GHC.Generics.M1 - ((GHC.Base..) - GHC.Generics.Comp1 (GHC.Base.fmap GHC.Generics.Rec1) g2))))) - GHC.Generics.to1 - (GHC.Generics.M1 (GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1))) - = GenDerivOutput.Empty - GHC.Generics.to1 - (GHC.Generics.M1 (GHC.Generics.R1 (GHC.Generics.M1 ((GHC.Generics.:*:) (GHC.Generics.M1 g1) - (GHC.Generics.M1 g2))))) - = GenDerivOutput.Rose - (GHC.Generics.unPar1 g1) - ((GHC.Base..) - (GHC.Base.fmap GHC.Generics.unRec1) GHC.Generics.unComp1 g2) - + (case x of { + GenDerivOutput.Empty + -> GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1) + GenDerivOutput.Rose g1 g2 + -> GHC.Generics.R1 + (GHC.Generics.M1 + ((GHC.Generics.:*:) + (GHC.Generics.M1 (GHC.Generics.Par1 g1)) + (GHC.Generics.M1 + ((GHC.Base..) + GHC.Generics.Comp1 (GHC.Base.fmap GHC.Generics.Rec1) g2)))) }) + GHC.Generics.to1 (GHC.Generics.M1 x) + = case x of { + GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1) + -> GenDerivOutput.Empty + GHC.Generics.R1 (GHC.Generics.M1 ((GHC.Generics.:*:) (GHC.Generics.M1 g1) + (GHC.Generics.M1 g2))) + -> GenDerivOutput.Rose + (GHC.Generics.unPar1 g1) + ((GHC.Base..) + (GHC.Base.fmap GHC.Generics.unRec1) GHC.Generics.unComp1 g2) } + GHC.Generics representation types: type GHC.Generics.Rep (GenDerivOutput.List a) = GHC.Generics.D1 diff --git a/testsuite/tests/generics/GenDerivOutput1_0.stderr b/testsuite/tests/generics/GenDerivOutput1_0.stderr index 0f4df6275a..cc12b64a39 100644 --- a/testsuite/tests/generics/GenDerivOutput1_0.stderr +++ b/testsuite/tests/generics/GenDerivOutput1_0.stderr @@ -2,25 +2,26 @@ ==================== Derived instances ==================== Derived instances: instance GHC.Generics.Generic1 GenDerivOutput1_0.List where - GHC.Generics.from1 GenDerivOutput1_0.Nil + GHC.Generics.from1 x = GHC.Generics.M1 - (GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1)) - GHC.Generics.from1 (GenDerivOutput1_0.Cons g1 g2) - = GHC.Generics.M1 - (GHC.Generics.R1 - (GHC.Generics.M1 - ((GHC.Generics.:*:) - (GHC.Generics.M1 (GHC.Generics.Par1 g1)) - (GHC.Generics.M1 (GHC.Generics.Rec1 g2))))) - GHC.Generics.to1 - (GHC.Generics.M1 (GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1))) - = GenDerivOutput1_0.Nil - GHC.Generics.to1 - (GHC.Generics.M1 (GHC.Generics.R1 (GHC.Generics.M1 ((GHC.Generics.:*:) (GHC.Generics.M1 g1) - (GHC.Generics.M1 g2))))) - = GenDerivOutput1_0.Cons - (GHC.Generics.unPar1 g1) (GHC.Generics.unRec1 g2) - + (case x of { + GenDerivOutput1_0.Nil + -> GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1) + GenDerivOutput1_0.Cons g1 g2 + -> GHC.Generics.R1 + (GHC.Generics.M1 + ((GHC.Generics.:*:) + (GHC.Generics.M1 (GHC.Generics.Par1 g1)) + (GHC.Generics.M1 (GHC.Generics.Rec1 g2)))) }) + GHC.Generics.to1 (GHC.Generics.M1 x) + = case x of { + GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1) + -> GenDerivOutput1_0.Nil + GHC.Generics.R1 (GHC.Generics.M1 ((GHC.Generics.:*:) (GHC.Generics.M1 g1) + (GHC.Generics.M1 g2))) + -> GenDerivOutput1_0.Cons + (GHC.Generics.unPar1 g1) (GHC.Generics.unRec1 g2) } + GHC.Generics representation types: type GHC.Generics.Rep1 GenDerivOutput1_0.List = GHC.Generics.D1 diff --git a/testsuite/tests/generics/GenDerivOutput1_1.stderr b/testsuite/tests/generics/GenDerivOutput1_1.stderr index d76d6bb593..53dbda1d62 100644 --- a/testsuite/tests/generics/GenDerivOutput1_1.stderr +++ b/testsuite/tests/generics/GenDerivOutput1_1.stderr @@ -2,157 +2,165 @@ ==================== Derived instances ==================== Derived instances: instance GHC.Generics.Generic1 CanDoRep1_1.Dd where - GHC.Generics.from1 CanDoRep1_1.D0d + GHC.Generics.from1 x = GHC.Generics.M1 - (GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1)) - GHC.Generics.from1 (CanDoRep1_1.D1d g1 g2) - = GHC.Generics.M1 - (GHC.Generics.R1 - (GHC.Generics.M1 - ((GHC.Generics.:*:) - (GHC.Generics.M1 (GHC.Generics.Par1 g1)) - (GHC.Generics.M1 (GHC.Generics.Rec1 g2))))) - GHC.Generics.to1 - (GHC.Generics.M1 (GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1))) - = CanDoRep1_1.D0d - GHC.Generics.to1 - (GHC.Generics.M1 (GHC.Generics.R1 (GHC.Generics.M1 ((GHC.Generics.:*:) (GHC.Generics.M1 g1) - (GHC.Generics.M1 g2))))) - = CanDoRep1_1.D1d (GHC.Generics.unPar1 g1) (GHC.Generics.unRec1 g2) - + (case x of { + CanDoRep1_1.D0d + -> GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1) + CanDoRep1_1.D1d g1 g2 + -> GHC.Generics.R1 + (GHC.Generics.M1 + ((GHC.Generics.:*:) + (GHC.Generics.M1 (GHC.Generics.Par1 g1)) + (GHC.Generics.M1 (GHC.Generics.Rec1 g2)))) }) + GHC.Generics.to1 (GHC.Generics.M1 x) + = case x of { + GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1) + -> CanDoRep1_1.D0d + GHC.Generics.R1 (GHC.Generics.M1 ((GHC.Generics.:*:) (GHC.Generics.M1 g1) + (GHC.Generics.M1 g2))) + -> CanDoRep1_1.D1d + (GHC.Generics.unPar1 g1) (GHC.Generics.unRec1 g2) } + instance GHC.Generics.Generic (CanDoRep1_1.Dd a) where - GHC.Generics.from CanDoRep1_1.D0d + GHC.Generics.from x = GHC.Generics.M1 - (GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1)) - GHC.Generics.from (CanDoRep1_1.D1d g1 g2) - = GHC.Generics.M1 - (GHC.Generics.R1 - (GHC.Generics.M1 - ((GHC.Generics.:*:) - (GHC.Generics.M1 (GHC.Generics.K1 g1)) - (GHC.Generics.M1 (GHC.Generics.K1 g2))))) - GHC.Generics.to - (GHC.Generics.M1 (GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1))) - = CanDoRep1_1.D0d - GHC.Generics.to - (GHC.Generics.M1 (GHC.Generics.R1 (GHC.Generics.M1 ((GHC.Generics.:*:) (GHC.Generics.M1 (GHC.Generics.K1 g1)) - (GHC.Generics.M1 (GHC.Generics.K1 g2)))))) - = CanDoRep1_1.D1d g1 g2 - + (case x of { + CanDoRep1_1.D0d + -> GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1) + CanDoRep1_1.D1d g1 g2 + -> GHC.Generics.R1 + (GHC.Generics.M1 + ((GHC.Generics.:*:) + (GHC.Generics.M1 (GHC.Generics.K1 g1)) + (GHC.Generics.M1 (GHC.Generics.K1 g2)))) }) + GHC.Generics.to (GHC.Generics.M1 x) + = case x of { + GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1) + -> CanDoRep1_1.D0d + GHC.Generics.R1 (GHC.Generics.M1 ((GHC.Generics.:*:) (GHC.Generics.M1 (GHC.Generics.K1 g1)) + (GHC.Generics.M1 (GHC.Generics.K1 g2)))) + -> CanDoRep1_1.D1d g1 g2 } + instance GHC.Generics.Generic (CanDoRep1_1.Dc a) where - GHC.Generics.from CanDoRep1_1.D0c + GHC.Generics.from x = GHC.Generics.M1 - (GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1)) - GHC.Generics.from (CanDoRep1_1.D1c g1 g2) - = GHC.Generics.M1 - (GHC.Generics.R1 - (GHC.Generics.M1 - ((GHC.Generics.:*:) - (GHC.Generics.M1 (GHC.Generics.K1 g1)) - (GHC.Generics.M1 (GHC.Generics.K1 g2))))) - GHC.Generics.to - (GHC.Generics.M1 (GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1))) - = CanDoRep1_1.D0c - GHC.Generics.to - (GHC.Generics.M1 (GHC.Generics.R1 (GHC.Generics.M1 ((GHC.Generics.:*:) (GHC.Generics.M1 (GHC.Generics.K1 g1)) - (GHC.Generics.M1 (GHC.Generics.K1 g2)))))) - = CanDoRep1_1.D1c g1 g2 - + (case x of { + CanDoRep1_1.D0c + -> GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1) + CanDoRep1_1.D1c g1 g2 + -> GHC.Generics.R1 + (GHC.Generics.M1 + ((GHC.Generics.:*:) + (GHC.Generics.M1 (GHC.Generics.K1 g1)) + (GHC.Generics.M1 (GHC.Generics.K1 g2)))) }) + GHC.Generics.to (GHC.Generics.M1 x) + = case x of { + GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1) + -> CanDoRep1_1.D0c + GHC.Generics.R1 (GHC.Generics.M1 ((GHC.Generics.:*:) (GHC.Generics.M1 (GHC.Generics.K1 g1)) + (GHC.Generics.M1 (GHC.Generics.K1 g2)))) + -> CanDoRep1_1.D1c g1 g2 } + instance GHC.Generics.Generic1 CanDoRep1_1.Db where - GHC.Generics.from1 CanDoRep1_1.D0b + GHC.Generics.from1 x = GHC.Generics.M1 - (GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1)) - GHC.Generics.from1 (CanDoRep1_1.D1b g1 g2) - = GHC.Generics.M1 - (GHC.Generics.R1 - (GHC.Generics.M1 - ((GHC.Generics.:*:) - (GHC.Generics.M1 (GHC.Generics.Par1 g1)) - (GHC.Generics.M1 (GHC.Generics.Rec1 g2))))) - GHC.Generics.to1 - (GHC.Generics.M1 (GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1))) - = CanDoRep1_1.D0b - GHC.Generics.to1 - (GHC.Generics.M1 (GHC.Generics.R1 (GHC.Generics.M1 ((GHC.Generics.:*:) (GHC.Generics.M1 g1) - (GHC.Generics.M1 g2))))) - = CanDoRep1_1.D1b (GHC.Generics.unPar1 g1) (GHC.Generics.unRec1 g2) - + (case x of { + CanDoRep1_1.D0b + -> GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1) + CanDoRep1_1.D1b g1 g2 + -> GHC.Generics.R1 + (GHC.Generics.M1 + ((GHC.Generics.:*:) + (GHC.Generics.M1 (GHC.Generics.Par1 g1)) + (GHC.Generics.M1 (GHC.Generics.Rec1 g2)))) }) + GHC.Generics.to1 (GHC.Generics.M1 x) + = case x of { + GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1) + -> CanDoRep1_1.D0b + GHC.Generics.R1 (GHC.Generics.M1 ((GHC.Generics.:*:) (GHC.Generics.M1 g1) + (GHC.Generics.M1 g2))) + -> CanDoRep1_1.D1b + (GHC.Generics.unPar1 g1) (GHC.Generics.unRec1 g2) } + instance GHC.Generics.Generic (CanDoRep1_1.Da a) where - GHC.Generics.from CanDoRep1_1.D0 + GHC.Generics.from x = GHC.Generics.M1 - (GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1)) - GHC.Generics.from (CanDoRep1_1.D1 g1 g2) - = GHC.Generics.M1 - (GHC.Generics.R1 - (GHC.Generics.M1 - ((GHC.Generics.:*:) - (GHC.Generics.M1 (GHC.Generics.K1 g1)) - (GHC.Generics.M1 (GHC.Generics.K1 g2))))) - GHC.Generics.to - (GHC.Generics.M1 (GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1))) - = CanDoRep1_1.D0 - GHC.Generics.to - (GHC.Generics.M1 (GHC.Generics.R1 (GHC.Generics.M1 ((GHC.Generics.:*:) (GHC.Generics.M1 (GHC.Generics.K1 g1)) - (GHC.Generics.M1 (GHC.Generics.K1 g2)))))) - = CanDoRep1_1.D1 g1 g2 - + (case x of { + CanDoRep1_1.D0 -> GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1) + CanDoRep1_1.D1 g1 g2 + -> GHC.Generics.R1 + (GHC.Generics.M1 + ((GHC.Generics.:*:) + (GHC.Generics.M1 (GHC.Generics.K1 g1)) + (GHC.Generics.M1 (GHC.Generics.K1 g2)))) }) + GHC.Generics.to (GHC.Generics.M1 x) + = case x of { + GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1) -> CanDoRep1_1.D0 + GHC.Generics.R1 (GHC.Generics.M1 ((GHC.Generics.:*:) (GHC.Generics.M1 (GHC.Generics.K1 g1)) + (GHC.Generics.M1 (GHC.Generics.K1 g2)))) + -> CanDoRep1_1.D1 g1 g2 } + instance GHC.Generics.Generic1 CanDoRep1_1.Da where - GHC.Generics.from1 CanDoRep1_1.D0 + GHC.Generics.from1 x = GHC.Generics.M1 - (GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1)) - GHC.Generics.from1 (CanDoRep1_1.D1 g1 g2) - = GHC.Generics.M1 - (GHC.Generics.R1 - (GHC.Generics.M1 - ((GHC.Generics.:*:) - (GHC.Generics.M1 (GHC.Generics.Par1 g1)) - (GHC.Generics.M1 (GHC.Generics.Rec1 g2))))) - GHC.Generics.to1 - (GHC.Generics.M1 (GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1))) - = CanDoRep1_1.D0 - GHC.Generics.to1 - (GHC.Generics.M1 (GHC.Generics.R1 (GHC.Generics.M1 ((GHC.Generics.:*:) (GHC.Generics.M1 g1) - (GHC.Generics.M1 g2))))) - = CanDoRep1_1.D1 (GHC.Generics.unPar1 g1) (GHC.Generics.unRec1 g2) - + (case x of { + CanDoRep1_1.D0 -> GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1) + CanDoRep1_1.D1 g1 g2 + -> GHC.Generics.R1 + (GHC.Generics.M1 + ((GHC.Generics.:*:) + (GHC.Generics.M1 (GHC.Generics.Par1 g1)) + (GHC.Generics.M1 (GHC.Generics.Rec1 g2)))) }) + GHC.Generics.to1 (GHC.Generics.M1 x) + = case x of { + GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1) -> CanDoRep1_1.D0 + GHC.Generics.R1 (GHC.Generics.M1 ((GHC.Generics.:*:) (GHC.Generics.M1 g1) + (GHC.Generics.M1 g2))) + -> CanDoRep1_1.D1 + (GHC.Generics.unPar1 g1) (GHC.Generics.unRec1 g2) } + instance GHC.Generics.Generic (CanDoRep1_1.Db a) where - GHC.Generics.from CanDoRep1_1.D0b + GHC.Generics.from x = GHC.Generics.M1 - (GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1)) - GHC.Generics.from (CanDoRep1_1.D1b g1 g2) - = GHC.Generics.M1 - (GHC.Generics.R1 - (GHC.Generics.M1 - ((GHC.Generics.:*:) - (GHC.Generics.M1 (GHC.Generics.K1 g1)) - (GHC.Generics.M1 (GHC.Generics.K1 g2))))) - GHC.Generics.to - (GHC.Generics.M1 (GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1))) - = CanDoRep1_1.D0b - GHC.Generics.to - (GHC.Generics.M1 (GHC.Generics.R1 (GHC.Generics.M1 ((GHC.Generics.:*:) (GHC.Generics.M1 (GHC.Generics.K1 g1)) - (GHC.Generics.M1 (GHC.Generics.K1 g2)))))) - = CanDoRep1_1.D1b g1 g2 - + (case x of { + CanDoRep1_1.D0b + -> GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1) + CanDoRep1_1.D1b g1 g2 + -> GHC.Generics.R1 + (GHC.Generics.M1 + ((GHC.Generics.:*:) + (GHC.Generics.M1 (GHC.Generics.K1 g1)) + (GHC.Generics.M1 (GHC.Generics.K1 g2)))) }) + GHC.Generics.to (GHC.Generics.M1 x) + = case x of { + GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1) + -> CanDoRep1_1.D0b + GHC.Generics.R1 (GHC.Generics.M1 ((GHC.Generics.:*:) (GHC.Generics.M1 (GHC.Generics.K1 g1)) + (GHC.Generics.M1 (GHC.Generics.K1 g2)))) + -> CanDoRep1_1.D1b g1 g2 } + instance GHC.Generics.Generic1 CanDoRep1_1.Dc where - GHC.Generics.from1 CanDoRep1_1.D0c + GHC.Generics.from1 x = GHC.Generics.M1 - (GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1)) - GHC.Generics.from1 (CanDoRep1_1.D1c g1 g2) - = GHC.Generics.M1 - (GHC.Generics.R1 - (GHC.Generics.M1 - ((GHC.Generics.:*:) - (GHC.Generics.M1 (GHC.Generics.Par1 g1)) - (GHC.Generics.M1 (GHC.Generics.Rec1 g2))))) - GHC.Generics.to1 - (GHC.Generics.M1 (GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1))) - = CanDoRep1_1.D0c - GHC.Generics.to1 - (GHC.Generics.M1 (GHC.Generics.R1 (GHC.Generics.M1 ((GHC.Generics.:*:) (GHC.Generics.M1 g1) - (GHC.Generics.M1 g2))))) - = CanDoRep1_1.D1c (GHC.Generics.unPar1 g1) (GHC.Generics.unRec1 g2) - + (case x of { + CanDoRep1_1.D0c + -> GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1) + CanDoRep1_1.D1c g1 g2 + -> GHC.Generics.R1 + (GHC.Generics.M1 + ((GHC.Generics.:*:) + (GHC.Generics.M1 (GHC.Generics.Par1 g1)) + (GHC.Generics.M1 (GHC.Generics.Rec1 g2)))) }) + GHC.Generics.to1 (GHC.Generics.M1 x) + = case x of { + GHC.Generics.L1 (GHC.Generics.M1 GHC.Generics.U1) + -> CanDoRep1_1.D0c + GHC.Generics.R1 (GHC.Generics.M1 ((GHC.Generics.:*:) (GHC.Generics.M1 g1) + (GHC.Generics.M1 g2))) + -> CanDoRep1_1.D1c + (GHC.Generics.unPar1 g1) (GHC.Generics.unRec1 g2) } + GHC.Generics representation types: type GHC.Generics.Rep1 CanDoRep1_1.Dd = GHC.Generics.D1 diff --git a/testsuite/tests/generics/T10604/T10604_deriving.stderr b/testsuite/tests/generics/T10604/T10604_deriving.stderr index cecb2ce308..cbaba8dbbe 100644 --- a/testsuite/tests/generics/T10604/T10604_deriving.stderr +++ b/testsuite/tests/generics/T10604/T10604_deriving.stderr @@ -2,162 +2,187 @@ ==================== Derived instances ==================== Derived instances: instance GHC.Generics.Generic (T10604_deriving.Empty a) where - GHC.Generics.from _ + GHC.Generics.from x = GHC.Generics.M1 - (GHC.Err.error - "No generic representation for empty datatype Empty") - GHC.Generics.to (GHC.Generics.M1 _) - = GHC.Err.error "No values for empty datatype Empty" + (case x of { + _ -> GHC.Err.error + "No generic representation for empty datatype Empty" }) + GHC.Generics.to (GHC.Generics.M1 x) + = case x of { + _ -> GHC.Err.error "No values for empty datatype Empty" } instance GHC.Generics.Generic1 GHC.Types.Bool T10604_deriving.Empty where - GHC.Generics.from1 _ + GHC.Generics.from1 x = GHC.Generics.M1 - (GHC.Err.error - "No generic representation for empty datatype Empty") - GHC.Generics.to1 (GHC.Generics.M1 _) - = GHC.Err.error "No values for empty datatype Empty" + (case x of { + _ -> GHC.Err.error + "No generic representation for empty datatype Empty" }) + GHC.Generics.to1 (GHC.Generics.M1 x) + = case x of { + _ -> GHC.Err.error "No values for empty datatype Empty" } instance GHC.Base.Functor (T10604_deriving.Proxy *) where GHC.Base.fmap f T10604_deriving.Proxy = T10604_deriving.Proxy instance forall k (a :: k). GHC.Generics.Generic (T10604_deriving.Proxy k a) where - GHC.Generics.from T10604_deriving.Proxy - = GHC.Generics.M1 (GHC.Generics.M1 GHC.Generics.U1) - GHC.Generics.to (GHC.Generics.M1 (GHC.Generics.M1 GHC.Generics.U1)) - = T10604_deriving.Proxy + GHC.Generics.from x + = GHC.Generics.M1 + (case x of { + T10604_deriving.Proxy -> GHC.Generics.M1 GHC.Generics.U1 }) + GHC.Generics.to (GHC.Generics.M1 x) + = case x of { + GHC.Generics.M1 GHC.Generics.U1 -> T10604_deriving.Proxy } instance GHC.Generics.Generic1 k (T10604_deriving.Proxy k) where - GHC.Generics.from1 T10604_deriving.Proxy - = GHC.Generics.M1 (GHC.Generics.M1 GHC.Generics.U1) - GHC.Generics.to1 - (GHC.Generics.M1 (GHC.Generics.M1 GHC.Generics.U1)) - = T10604_deriving.Proxy + GHC.Generics.from1 x + = GHC.Generics.M1 + (case x of { + T10604_deriving.Proxy -> GHC.Generics.M1 GHC.Generics.U1 }) + GHC.Generics.to1 (GHC.Generics.M1 x) + = case x of { + GHC.Generics.M1 GHC.Generics.U1 -> T10604_deriving.Proxy } instance GHC.Generics.Generic (T10604_deriving.Wrap a) where - GHC.Generics.from (T10604_deriving.Wrap g1) + GHC.Generics.from x = GHC.Generics.M1 - (GHC.Generics.M1 (GHC.Generics.M1 (GHC.Generics.K1 g1))) - GHC.Generics.to - (GHC.Generics.M1 (GHC.Generics.M1 (GHC.Generics.M1 (GHC.Generics.K1 g1)))) - = T10604_deriving.Wrap g1 + (case x of { + T10604_deriving.Wrap g1 + -> GHC.Generics.M1 (GHC.Generics.M1 (GHC.Generics.K1 g1)) }) + GHC.Generics.to (GHC.Generics.M1 x) + = case x of { + GHC.Generics.M1 (GHC.Generics.M1 (GHC.Generics.K1 g1)) + -> T10604_deriving.Wrap g1 } instance GHC.Generics.Generic1 (GHC.Types.* -> GHC.Types.*) T10604_deriving.Wrap where - GHC.Generics.from1 (T10604_deriving.Wrap g1) + GHC.Generics.from1 x = GHC.Generics.M1 - (GHC.Generics.M1 (GHC.Generics.M1 (GHC.Generics.Rec1 g1))) - GHC.Generics.to1 - (GHC.Generics.M1 (GHC.Generics.M1 (GHC.Generics.M1 g1))) - = T10604_deriving.Wrap (GHC.Generics.unRec1 g1) + (case x of { + T10604_deriving.Wrap g1 + -> GHC.Generics.M1 (GHC.Generics.M1 (GHC.Generics.Rec1 g1)) }) + GHC.Generics.to1 (GHC.Generics.M1 x) + = case x of { + GHC.Generics.M1 (GHC.Generics.M1 g1) + -> T10604_deriving.Wrap (GHC.Generics.unRec1 g1) } instance forall k (a :: k -> GHC.Types.*). GHC.Generics.Generic (T10604_deriving.Wrap2 k a) where - GHC.Generics.from (T10604_deriving.Wrap2 g1) + GHC.Generics.from x = GHC.Generics.M1 - (GHC.Generics.M1 (GHC.Generics.M1 (GHC.Generics.K1 g1))) - GHC.Generics.to - (GHC.Generics.M1 (GHC.Generics.M1 (GHC.Generics.M1 (GHC.Generics.K1 g1)))) - = T10604_deriving.Wrap2 g1 + (case x of { + T10604_deriving.Wrap2 g1 + -> GHC.Generics.M1 (GHC.Generics.M1 (GHC.Generics.K1 g1)) }) + GHC.Generics.to (GHC.Generics.M1 x) + = case x of { + GHC.Generics.M1 (GHC.Generics.M1 (GHC.Generics.K1 g1)) + -> T10604_deriving.Wrap2 g1 } instance GHC.Generics.Generic1 (k -> GHC.Types.*) (T10604_deriving.Wrap2 k) where - GHC.Generics.from1 (T10604_deriving.Wrap2 g1) + GHC.Generics.from1 x = GHC.Generics.M1 - (GHC.Generics.M1 - (GHC.Generics.M1 - ((GHC.Base..) - GHC.Generics.Comp1 (GHC.Base.fmap GHC.Generics.Rec1) g1))) - GHC.Generics.to1 - (GHC.Generics.M1 (GHC.Generics.M1 (GHC.Generics.M1 g1))) - = T10604_deriving.Wrap2 - ((GHC.Base..) - (GHC.Base.fmap GHC.Generics.unRec1) GHC.Generics.unComp1 g1) + (case x of { + T10604_deriving.Wrap2 g1 + -> GHC.Generics.M1 + (GHC.Generics.M1 + ((GHC.Base..) + GHC.Generics.Comp1 (GHC.Base.fmap GHC.Generics.Rec1) g1)) }) + GHC.Generics.to1 (GHC.Generics.M1 x) + = case x of { + GHC.Generics.M1 (GHC.Generics.M1 g1) + -> T10604_deriving.Wrap2 + ((GHC.Base..) + (GHC.Base.fmap GHC.Generics.unRec1) GHC.Generics.unComp1 g1) } instance forall k (a :: k). GHC.Generics.Generic (T10604_deriving.SumOfProducts k a) where - GHC.Generics.from (T10604_deriving.Prod1 g1 g2) - = GHC.Generics.M1 - (GHC.Generics.L1 - (GHC.Generics.M1 - ((GHC.Generics.:*:) - (GHC.Generics.M1 (GHC.Generics.K1 g1)) - (GHC.Generics.M1 (GHC.Generics.K1 g2))))) - GHC.Generics.from (T10604_deriving.Prod2 g1 g2) + GHC.Generics.from x = GHC.Generics.M1 - (GHC.Generics.R1 - (GHC.Generics.M1 - ((GHC.Generics.:*:) - (GHC.Generics.M1 (GHC.Generics.K1 g1)) - (GHC.Generics.M1 (GHC.Generics.K1 g2))))) - GHC.Generics.to - (GHC.Generics.M1 (GHC.Generics.L1 (GHC.Generics.M1 ((GHC.Generics.:*:) (GHC.Generics.M1 (GHC.Generics.K1 g1)) - (GHC.Generics.M1 (GHC.Generics.K1 g2)))))) - = T10604_deriving.Prod1 g1 g2 - GHC.Generics.to - (GHC.Generics.M1 (GHC.Generics.R1 (GHC.Generics.M1 ((GHC.Generics.:*:) (GHC.Generics.M1 (GHC.Generics.K1 g1)) - (GHC.Generics.M1 (GHC.Generics.K1 g2)))))) - = T10604_deriving.Prod2 g1 g2 + (case x of { + T10604_deriving.Prod1 g1 g2 + -> GHC.Generics.L1 + (GHC.Generics.M1 + ((GHC.Generics.:*:) + (GHC.Generics.M1 (GHC.Generics.K1 g1)) + (GHC.Generics.M1 (GHC.Generics.K1 g2)))) + T10604_deriving.Prod2 g1 g2 + -> GHC.Generics.R1 + (GHC.Generics.M1 + ((GHC.Generics.:*:) + (GHC.Generics.M1 (GHC.Generics.K1 g1)) + (GHC.Generics.M1 (GHC.Generics.K1 g2)))) }) + GHC.Generics.to (GHC.Generics.M1 x) + = case x of { + GHC.Generics.L1 (GHC.Generics.M1 ((GHC.Generics.:*:) (GHC.Generics.M1 (GHC.Generics.K1 g1)) + (GHC.Generics.M1 (GHC.Generics.K1 g2)))) + -> T10604_deriving.Prod1 g1 g2 + GHC.Generics.R1 (GHC.Generics.M1 ((GHC.Generics.:*:) (GHC.Generics.M1 (GHC.Generics.K1 g1)) + (GHC.Generics.M1 (GHC.Generics.K1 g2)))) + -> T10604_deriving.Prod2 g1 g2 } instance GHC.Generics.Generic1 k (T10604_deriving.SumOfProducts k) where - GHC.Generics.from1 (T10604_deriving.Prod1 g1 g2) + GHC.Generics.from1 x = GHC.Generics.M1 - (GHC.Generics.L1 - (GHC.Generics.M1 - ((GHC.Generics.:*:) - (GHC.Generics.M1 (GHC.Generics.Rec1 g1)) - (GHC.Generics.M1 (GHC.Generics.Rec1 g2))))) - GHC.Generics.from1 (T10604_deriving.Prod2 g1 g2) - = GHC.Generics.M1 - (GHC.Generics.R1 - (GHC.Generics.M1 - ((GHC.Generics.:*:) - (GHC.Generics.M1 (GHC.Generics.Rec1 g1)) - (GHC.Generics.M1 (GHC.Generics.Rec1 g2))))) - GHC.Generics.to1 - (GHC.Generics.M1 (GHC.Generics.L1 (GHC.Generics.M1 ((GHC.Generics.:*:) (GHC.Generics.M1 g1) - (GHC.Generics.M1 g2))))) - = T10604_deriving.Prod1 - (GHC.Generics.unRec1 g1) (GHC.Generics.unRec1 g2) - GHC.Generics.to1 - (GHC.Generics.M1 (GHC.Generics.R1 (GHC.Generics.M1 ((GHC.Generics.:*:) (GHC.Generics.M1 g1) - (GHC.Generics.M1 g2))))) - = T10604_deriving.Prod2 - (GHC.Generics.unRec1 g1) (GHC.Generics.unRec1 g2) + (case x of { + T10604_deriving.Prod1 g1 g2 + -> GHC.Generics.L1 + (GHC.Generics.M1 + ((GHC.Generics.:*:) + (GHC.Generics.M1 (GHC.Generics.Rec1 g1)) + (GHC.Generics.M1 (GHC.Generics.Rec1 g2)))) + T10604_deriving.Prod2 g1 g2 + -> GHC.Generics.R1 + (GHC.Generics.M1 + ((GHC.Generics.:*:) + (GHC.Generics.M1 (GHC.Generics.Rec1 g1)) + (GHC.Generics.M1 (GHC.Generics.Rec1 g2)))) }) + GHC.Generics.to1 (GHC.Generics.M1 x) + = case x of { + GHC.Generics.L1 (GHC.Generics.M1 ((GHC.Generics.:*:) (GHC.Generics.M1 g1) + (GHC.Generics.M1 g2))) + -> T10604_deriving.Prod1 + (GHC.Generics.unRec1 g1) (GHC.Generics.unRec1 g2) + GHC.Generics.R1 (GHC.Generics.M1 ((GHC.Generics.:*:) (GHC.Generics.M1 g1) + (GHC.Generics.M1 g2))) + -> T10604_deriving.Prod2 + (GHC.Generics.unRec1 g1) (GHC.Generics.unRec1 g2) } instance GHC.Generics.Generic (T10604_deriving.Starify a) where - GHC.Generics.from (T10604_deriving.Starify1 g1) - = GHC.Generics.M1 - (GHC.Generics.L1 - (GHC.Generics.M1 (GHC.Generics.M1 (GHC.Generics.K1 g1)))) - GHC.Generics.from (T10604_deriving.Starify2 g1) + GHC.Generics.from x = GHC.Generics.M1 - (GHC.Generics.R1 - (GHC.Generics.M1 (GHC.Generics.M1 (GHC.Generics.K1 g1)))) - GHC.Generics.to - (GHC.Generics.M1 (GHC.Generics.L1 (GHC.Generics.M1 (GHC.Generics.M1 (GHC.Generics.K1 g1))))) - = T10604_deriving.Starify1 g1 - GHC.Generics.to - (GHC.Generics.M1 (GHC.Generics.R1 (GHC.Generics.M1 (GHC.Generics.M1 (GHC.Generics.K1 g1))))) - = T10604_deriving.Starify2 g1 + (case x of { + T10604_deriving.Starify1 g1 + -> GHC.Generics.L1 + (GHC.Generics.M1 (GHC.Generics.M1 (GHC.Generics.K1 g1))) + T10604_deriving.Starify2 g1 + -> GHC.Generics.R1 + (GHC.Generics.M1 (GHC.Generics.M1 (GHC.Generics.K1 g1))) }) + GHC.Generics.to (GHC.Generics.M1 x) + = case x of { + GHC.Generics.L1 (GHC.Generics.M1 (GHC.Generics.M1 (GHC.Generics.K1 g1))) + -> T10604_deriving.Starify1 g1 + GHC.Generics.R1 (GHC.Generics.M1 (GHC.Generics.M1 (GHC.Generics.K1 g1))) + -> T10604_deriving.Starify2 g1 } instance GHC.Generics.Generic1 * T10604_deriving.Starify where - GHC.Generics.from1 (T10604_deriving.Starify1 g1) - = GHC.Generics.M1 - (GHC.Generics.L1 - (GHC.Generics.M1 (GHC.Generics.M1 (GHC.Generics.Par1 g1)))) - GHC.Generics.from1 (T10604_deriving.Starify2 g1) + GHC.Generics.from1 x = GHC.Generics.M1 - (GHC.Generics.R1 - (GHC.Generics.M1 (GHC.Generics.M1 (GHC.Generics.K1 g1)))) - GHC.Generics.to1 - (GHC.Generics.M1 (GHC.Generics.L1 (GHC.Generics.M1 (GHC.Generics.M1 g1)))) - = T10604_deriving.Starify1 (GHC.Generics.unPar1 g1) - GHC.Generics.to1 - (GHC.Generics.M1 (GHC.Generics.R1 (GHC.Generics.M1 (GHC.Generics.M1 g1)))) - = T10604_deriving.Starify2 (GHC.Generics.unK1 g1) + (case x of { + T10604_deriving.Starify1 g1 + -> GHC.Generics.L1 + (GHC.Generics.M1 (GHC.Generics.M1 (GHC.Generics.Par1 g1))) + T10604_deriving.Starify2 g1 + -> GHC.Generics.R1 + (GHC.Generics.M1 (GHC.Generics.M1 (GHC.Generics.K1 g1))) }) + GHC.Generics.to1 (GHC.Generics.M1 x) + = case x of { + GHC.Generics.L1 (GHC.Generics.M1 (GHC.Generics.M1 g1)) + -> T10604_deriving.Starify1 (GHC.Generics.unPar1 g1) + GHC.Generics.R1 (GHC.Generics.M1 (GHC.Generics.M1 g1)) + -> T10604_deriving.Starify2 (GHC.Generics.unK1 g1) } GHC.Generics representation types: diff --git a/testsuite/tests/perf/compiler/T5642.hs b/testsuite/tests/perf/compiler/T5642.hs index 00c7ee012c..cc4a98026b 100644 --- a/testsuite/tests/perf/compiler/T5642.hs +++ b/testsuite/tests/perf/compiler/T5642.hs @@ -44,206 +44,208 @@ module GenBigTypes where instance Generic BigSum where type Rep BigSum = Rep_BigSum - from C0 = M1 (L1 (L1 (L1 (L1 (L1 (L1 (M1 U1))))))) - from C1 = M1 (L1 (L1 (L1 (L1 (L1 (R1 (L1 (M1 U1)))))))) - from C2 = M1 (L1 (L1 (L1 (L1 (L1 (R1 (R1 (M1 U1)))))))) - from C3 = M1 (L1 (L1 (L1 (L1 (R1 (L1 (M1 U1))))))) - from C4 = M1 (L1 (L1 (L1 (L1 (R1 (R1 (L1 (M1 U1)))))))) - from C5 = M1 (L1 (L1 (L1 (L1 (R1 (R1 (R1 (M1 U1)))))))) - from C6 = M1 (L1 (L1 (L1 (R1 (L1 (L1 (M1 U1))))))) - from C7 = M1 (L1 (L1 (L1 (R1 (L1 (R1 (L1 (M1 U1)))))))) - from C8 = M1 (L1 (L1 (L1 (R1 (L1 (R1 (R1 (M1 U1)))))))) - from C9 = M1 (L1 (L1 (L1 (R1 (R1 (L1 (M1 U1))))))) - from C10 = M1 (L1 (L1 (L1 (R1 (R1 (R1 (L1 (M1 U1)))))))) - from C11 = M1 (L1 (L1 (L1 (R1 (R1 (R1 (R1 (M1 U1)))))))) - from C12 = M1 (L1 (L1 (R1 (L1 (L1 (L1 (M1 U1))))))) - from C13 = M1 (L1 (L1 (R1 (L1 (L1 (R1 (L1 (M1 U1)))))))) - from C14 = M1 (L1 (L1 (R1 (L1 (L1 (R1 (R1 (M1 U1)))))))) - from C15 = M1 (L1 (L1 (R1 (L1 (R1 (L1 (M1 U1))))))) - from C16 = M1 (L1 (L1 (R1 (L1 (R1 (R1 (L1 (M1 U1)))))))) - from C17 = M1 (L1 (L1 (R1 (L1 (R1 (R1 (R1 (M1 U1)))))))) - from C18 = M1 (L1 (L1 (R1 (R1 (L1 (L1 (M1 U1))))))) - from C19 = M1 (L1 (L1 (R1 (R1 (L1 (R1 (L1 (M1 U1)))))))) - from C20 = M1 (L1 (L1 (R1 (R1 (L1 (R1 (R1 (M1 U1)))))))) - from C21 = M1 (L1 (L1 (R1 (R1 (R1 (L1 (L1 (M1 U1)))))))) - from C22 = M1 (L1 (L1 (R1 (R1 (R1 (L1 (R1 (M1 U1)))))))) - from C23 = M1 (L1 (L1 (R1 (R1 (R1 (R1 (L1 (M1 U1)))))))) - from C24 = M1 (L1 (L1 (R1 (R1 (R1 (R1 (R1 (M1 U1)))))))) - from C25 = M1 (L1 (R1 (L1 (L1 (L1 (L1 (M1 U1))))))) - from C26 = M1 (L1 (R1 (L1 (L1 (L1 (R1 (L1 (M1 U1)))))))) - from C27 = M1 (L1 (R1 (L1 (L1 (L1 (R1 (R1 (M1 U1)))))))) - from C28 = M1 (L1 (R1 (L1 (L1 (R1 (L1 (M1 U1))))))) - from C29 = M1 (L1 (R1 (L1 (L1 (R1 (R1 (L1 (M1 U1)))))))) - from C30 = M1 (L1 (R1 (L1 (L1 (R1 (R1 (R1 (M1 U1)))))))) - from C31 = M1 (L1 (R1 (L1 (R1 (L1 (L1 (M1 U1))))))) - from C32 = M1 (L1 (R1 (L1 (R1 (L1 (R1 (L1 (M1 U1)))))))) - from C33 = M1 (L1 (R1 (L1 (R1 (L1 (R1 (R1 (M1 U1)))))))) - from C34 = M1 (L1 (R1 (L1 (R1 (R1 (L1 (M1 U1))))))) - from C35 = M1 (L1 (R1 (L1 (R1 (R1 (R1 (L1 (M1 U1)))))))) - from C36 = M1 (L1 (R1 (L1 (R1 (R1 (R1 (R1 (M1 U1)))))))) - from C37 = M1 (L1 (R1 (R1 (L1 (L1 (L1 (M1 U1))))))) - from C38 = M1 (L1 (R1 (R1 (L1 (L1 (R1 (L1 (M1 U1)))))))) - from C39 = M1 (L1 (R1 (R1 (L1 (L1 (R1 (R1 (M1 U1)))))))) - from C40 = M1 (L1 (R1 (R1 (L1 (R1 (L1 (M1 U1))))))) - from C41 = M1 (L1 (R1 (R1 (L1 (R1 (R1 (L1 (M1 U1)))))))) - from C42 = M1 (L1 (R1 (R1 (L1 (R1 (R1 (R1 (M1 U1)))))))) - from C43 = M1 (L1 (R1 (R1 (R1 (L1 (L1 (M1 U1))))))) - from C44 = M1 (L1 (R1 (R1 (R1 (L1 (R1 (L1 (M1 U1)))))))) - from C45 = M1 (L1 (R1 (R1 (R1 (L1 (R1 (R1 (M1 U1)))))))) - from C46 = M1 (L1 (R1 (R1 (R1 (R1 (L1 (L1 (M1 U1)))))))) - from C47 = M1 (L1 (R1 (R1 (R1 (R1 (L1 (R1 (M1 U1)))))))) - from C48 = M1 (L1 (R1 (R1 (R1 (R1 (R1 (L1 (M1 U1)))))))) - from C49 = M1 (L1 (R1 (R1 (R1 (R1 (R1 (R1 (M1 U1)))))))) - from C50 = M1 (R1 (L1 (L1 (L1 (L1 (L1 (M1 U1))))))) - from C51 = M1 (R1 (L1 (L1 (L1 (L1 (R1 (L1 (M1 U1)))))))) - from C52 = M1 (R1 (L1 (L1 (L1 (L1 (R1 (R1 (M1 U1)))))))) - from C53 = M1 (R1 (L1 (L1 (L1 (R1 (L1 (M1 U1))))))) - from C54 = M1 (R1 (L1 (L1 (L1 (R1 (R1 (L1 (M1 U1)))))))) - from C55 = M1 (R1 (L1 (L1 (L1 (R1 (R1 (R1 (M1 U1)))))))) - from C56 = M1 (R1 (L1 (L1 (R1 (L1 (L1 (M1 U1))))))) - from C57 = M1 (R1 (L1 (L1 (R1 (L1 (R1 (L1 (M1 U1)))))))) - from C58 = M1 (R1 (L1 (L1 (R1 (L1 (R1 (R1 (M1 U1)))))))) - from C59 = M1 (R1 (L1 (L1 (R1 (R1 (L1 (M1 U1))))))) - from C60 = M1 (R1 (L1 (L1 (R1 (R1 (R1 (L1 (M1 U1)))))))) - from C61 = M1 (R1 (L1 (L1 (R1 (R1 (R1 (R1 (M1 U1)))))))) - from C62 = M1 (R1 (L1 (R1 (L1 (L1 (L1 (M1 U1))))))) - from C63 = M1 (R1 (L1 (R1 (L1 (L1 (R1 (L1 (M1 U1)))))))) - from C64 = M1 (R1 (L1 (R1 (L1 (L1 (R1 (R1 (M1 U1)))))))) - from C65 = M1 (R1 (L1 (R1 (L1 (R1 (L1 (M1 U1))))))) - from C66 = M1 (R1 (L1 (R1 (L1 (R1 (R1 (L1 (M1 U1)))))))) - from C67 = M1 (R1 (L1 (R1 (L1 (R1 (R1 (R1 (M1 U1)))))))) - from C68 = M1 (R1 (L1 (R1 (R1 (L1 (L1 (M1 U1))))))) - from C69 = M1 (R1 (L1 (R1 (R1 (L1 (R1 (L1 (M1 U1)))))))) - from C70 = M1 (R1 (L1 (R1 (R1 (L1 (R1 (R1 (M1 U1)))))))) - from C71 = M1 (R1 (L1 (R1 (R1 (R1 (L1 (L1 (M1 U1)))))))) - from C72 = M1 (R1 (L1 (R1 (R1 (R1 (L1 (R1 (M1 U1)))))))) - from C73 = M1 (R1 (L1 (R1 (R1 (R1 (R1 (L1 (M1 U1)))))))) - from C74 = M1 (R1 (L1 (R1 (R1 (R1 (R1 (R1 (M1 U1)))))))) - from C75 = M1 (R1 (R1 (L1 (L1 (L1 (L1 (M1 U1))))))) - from C76 = M1 (R1 (R1 (L1 (L1 (L1 (R1 (L1 (M1 U1)))))))) - from C77 = M1 (R1 (R1 (L1 (L1 (L1 (R1 (R1 (M1 U1)))))))) - from C78 = M1 (R1 (R1 (L1 (L1 (R1 (L1 (M1 U1))))))) - from C79 = M1 (R1 (R1 (L1 (L1 (R1 (R1 (L1 (M1 U1)))))))) - from C80 = M1 (R1 (R1 (L1 (L1 (R1 (R1 (R1 (M1 U1)))))))) - from C81 = M1 (R1 (R1 (L1 (R1 (L1 (L1 (M1 U1))))))) - from C82 = M1 (R1 (R1 (L1 (R1 (L1 (R1 (L1 (M1 U1)))))))) - from C83 = M1 (R1 (R1 (L1 (R1 (L1 (R1 (R1 (M1 U1)))))))) - from C84 = M1 (R1 (R1 (L1 (R1 (R1 (L1 (M1 U1))))))) - from C85 = M1 (R1 (R1 (L1 (R1 (R1 (R1 (L1 (M1 U1)))))))) - from C86 = M1 (R1 (R1 (L1 (R1 (R1 (R1 (R1 (M1 U1)))))))) - from C87 = M1 (R1 (R1 (R1 (L1 (L1 (L1 (M1 U1))))))) - from C88 = M1 (R1 (R1 (R1 (L1 (L1 (R1 (L1 (M1 U1)))))))) - from C89 = M1 (R1 (R1 (R1 (L1 (L1 (R1 (R1 (M1 U1)))))))) - from C90 = M1 (R1 (R1 (R1 (L1 (R1 (L1 (M1 U1))))))) - from C91 = M1 (R1 (R1 (R1 (L1 (R1 (R1 (L1 (M1 U1)))))))) - from C92 = M1 (R1 (R1 (R1 (L1 (R1 (R1 (R1 (M1 U1)))))))) - from C93 = M1 (R1 (R1 (R1 (R1 (L1 (L1 (M1 U1))))))) - from C94 = M1 (R1 (R1 (R1 (R1 (L1 (R1 (L1 (M1 U1)))))))) - from C95 = M1 (R1 (R1 (R1 (R1 (L1 (R1 (R1 (M1 U1)))))))) - from C96 = M1 (R1 (R1 (R1 (R1 (R1 (L1 (L1 (M1 U1)))))))) - from C97 = M1 (R1 (R1 (R1 (R1 (R1 (L1 (R1 (M1 U1)))))))) - from C98 = M1 (R1 (R1 (R1 (R1 (R1 (R1 (L1 (M1 U1)))))))) - from C99 = M1 (R1 (R1 (R1 (R1 (R1 (R1 (R1 (M1 U1)))))))) - to (M1 (L1 (L1 (L1 (L1 (L1 (L1 (M1 U1)))))))) = C0 - to (M1 (L1 (L1 (L1 (L1 (L1 (R1 (L1 (M1 U1))))))))) = C1 - to (M1 (L1 (L1 (L1 (L1 (L1 (R1 (R1 (M1 U1))))))))) = C2 - to (M1 (L1 (L1 (L1 (L1 (R1 (L1 (M1 U1)))))))) = C3 - to (M1 (L1 (L1 (L1 (L1 (R1 (R1 (L1 (M1 U1))))))))) = C4 - to (M1 (L1 (L1 (L1 (L1 (R1 (R1 (R1 (M1 U1))))))))) = C5 - to (M1 (L1 (L1 (L1 (R1 (L1 (L1 (M1 U1)))))))) = C6 - to (M1 (L1 (L1 (L1 (R1 (L1 (R1 (L1 (M1 U1))))))))) = C7 - to (M1 (L1 (L1 (L1 (R1 (L1 (R1 (R1 (M1 U1))))))))) = C8 - to (M1 (L1 (L1 (L1 (R1 (R1 (L1 (M1 U1)))))))) = C9 - to (M1 (L1 (L1 (L1 (R1 (R1 (R1 (L1 (M1 U1))))))))) = C10 - to (M1 (L1 (L1 (L1 (R1 (R1 (R1 (R1 (M1 U1))))))))) = C11 - to (M1 (L1 (L1 (R1 (L1 (L1 (L1 (M1 U1)))))))) = C12 - to (M1 (L1 (L1 (R1 (L1 (L1 (R1 (L1 (M1 U1))))))))) = C13 - to (M1 (L1 (L1 (R1 (L1 (L1 (R1 (R1 (M1 U1))))))))) = C14 - to (M1 (L1 (L1 (R1 (L1 (R1 (L1 (M1 U1)))))))) = C15 - to (M1 (L1 (L1 (R1 (L1 (R1 (R1 (L1 (M1 U1))))))))) = C16 - to (M1 (L1 (L1 (R1 (L1 (R1 (R1 (R1 (M1 U1))))))))) = C17 - to (M1 (L1 (L1 (R1 (R1 (L1 (L1 (M1 U1)))))))) = C18 - to (M1 (L1 (L1 (R1 (R1 (L1 (R1 (L1 (M1 U1))))))))) = C19 - to (M1 (L1 (L1 (R1 (R1 (L1 (R1 (R1 (M1 U1))))))))) = C20 - to (M1 (L1 (L1 (R1 (R1 (R1 (L1 (L1 (M1 U1))))))))) = C21 - to (M1 (L1 (L1 (R1 (R1 (R1 (L1 (R1 (M1 U1))))))))) = C22 - to (M1 (L1 (L1 (R1 (R1 (R1 (R1 (L1 (M1 U1))))))))) = C23 - to (M1 (L1 (L1 (R1 (R1 (R1 (R1 (R1 (M1 U1))))))))) = C24 - to (M1 (L1 (R1 (L1 (L1 (L1 (L1 (M1 U1)))))))) = C25 - to (M1 (L1 (R1 (L1 (L1 (L1 (R1 (L1 (M1 U1))))))))) = C26 - to (M1 (L1 (R1 (L1 (L1 (L1 (R1 (R1 (M1 U1))))))))) = C27 - to (M1 (L1 (R1 (L1 (L1 (R1 (L1 (M1 U1)))))))) = C28 - to (M1 (L1 (R1 (L1 (L1 (R1 (R1 (L1 (M1 U1))))))))) = C29 - to (M1 (L1 (R1 (L1 (L1 (R1 (R1 (R1 (M1 U1))))))))) = C30 - to (M1 (L1 (R1 (L1 (R1 (L1 (L1 (M1 U1)))))))) = C31 - to (M1 (L1 (R1 (L1 (R1 (L1 (R1 (L1 (M1 U1))))))))) = C32 - to (M1 (L1 (R1 (L1 (R1 (L1 (R1 (R1 (M1 U1))))))))) = C33 - to (M1 (L1 (R1 (L1 (R1 (R1 (L1 (M1 U1)))))))) = C34 - to (M1 (L1 (R1 (L1 (R1 (R1 (R1 (L1 (M1 U1))))))))) = C35 - to (M1 (L1 (R1 (L1 (R1 (R1 (R1 (R1 (M1 U1))))))))) = C36 - to (M1 (L1 (R1 (R1 (L1 (L1 (L1 (M1 U1)))))))) = C37 - to (M1 (L1 (R1 (R1 (L1 (L1 (R1 (L1 (M1 U1))))))))) = C38 - to (M1 (L1 (R1 (R1 (L1 (L1 (R1 (R1 (M1 U1))))))))) = C39 - to (M1 (L1 (R1 (R1 (L1 (R1 (L1 (M1 U1)))))))) = C40 - to (M1 (L1 (R1 (R1 (L1 (R1 (R1 (L1 (M1 U1))))))))) = C41 - to (M1 (L1 (R1 (R1 (L1 (R1 (R1 (R1 (M1 U1))))))))) = C42 - to (M1 (L1 (R1 (R1 (R1 (L1 (L1 (M1 U1)))))))) = C43 - to (M1 (L1 (R1 (R1 (R1 (L1 (R1 (L1 (M1 U1))))))))) = C44 - to (M1 (L1 (R1 (R1 (R1 (L1 (R1 (R1 (M1 U1))))))))) = C45 - to (M1 (L1 (R1 (R1 (R1 (R1 (L1 (L1 (M1 U1))))))))) = C46 - to (M1 (L1 (R1 (R1 (R1 (R1 (L1 (R1 (M1 U1))))))))) = C47 - to (M1 (L1 (R1 (R1 (R1 (R1 (R1 (L1 (M1 U1))))))))) = C48 - to (M1 (L1 (R1 (R1 (R1 (R1 (R1 (R1 (M1 U1))))))))) = C49 - to (M1 (R1 (L1 (L1 (L1 (L1 (L1 (M1 U1)))))))) = C50 - to (M1 (R1 (L1 (L1 (L1 (L1 (R1 (L1 (M1 U1))))))))) = C51 - to (M1 (R1 (L1 (L1 (L1 (L1 (R1 (R1 (M1 U1))))))))) = C52 - to (M1 (R1 (L1 (L1 (L1 (R1 (L1 (M1 U1)))))))) = C53 - to (M1 (R1 (L1 (L1 (L1 (R1 (R1 (L1 (M1 U1))))))))) = C54 - to (M1 (R1 (L1 (L1 (L1 (R1 (R1 (R1 (M1 U1))))))))) = C55 - to (M1 (R1 (L1 (L1 (R1 (L1 (L1 (M1 U1)))))))) = C56 - to (M1 (R1 (L1 (L1 (R1 (L1 (R1 (L1 (M1 U1))))))))) = C57 - to (M1 (R1 (L1 (L1 (R1 (L1 (R1 (R1 (M1 U1))))))))) = C58 - to (M1 (R1 (L1 (L1 (R1 (R1 (L1 (M1 U1)))))))) = C59 - to (M1 (R1 (L1 (L1 (R1 (R1 (R1 (L1 (M1 U1))))))))) = C60 - to (M1 (R1 (L1 (L1 (R1 (R1 (R1 (R1 (M1 U1))))))))) = C61 - to (M1 (R1 (L1 (R1 (L1 (L1 (L1 (M1 U1)))))))) = C62 - to (M1 (R1 (L1 (R1 (L1 (L1 (R1 (L1 (M1 U1))))))))) = C63 - to (M1 (R1 (L1 (R1 (L1 (L1 (R1 (R1 (M1 U1))))))))) = C64 - to (M1 (R1 (L1 (R1 (L1 (R1 (L1 (M1 U1)))))))) = C65 - to (M1 (R1 (L1 (R1 (L1 (R1 (R1 (L1 (M1 U1))))))))) = C66 - to (M1 (R1 (L1 (R1 (L1 (R1 (R1 (R1 (M1 U1))))))))) = C67 - to (M1 (R1 (L1 (R1 (R1 (L1 (L1 (M1 U1)))))))) = C68 - to (M1 (R1 (L1 (R1 (R1 (L1 (R1 (L1 (M1 U1))))))))) = C69 - to (M1 (R1 (L1 (R1 (R1 (L1 (R1 (R1 (M1 U1))))))))) = C70 - to (M1 (R1 (L1 (R1 (R1 (R1 (L1 (L1 (M1 U1))))))))) = C71 - to (M1 (R1 (L1 (R1 (R1 (R1 (L1 (R1 (M1 U1))))))))) = C72 - to (M1 (R1 (L1 (R1 (R1 (R1 (R1 (L1 (M1 U1))))))))) = C73 - to (M1 (R1 (L1 (R1 (R1 (R1 (R1 (R1 (M1 U1))))))))) = C74 - to (M1 (R1 (R1 (L1 (L1 (L1 (L1 (M1 U1)))))))) = C75 - to (M1 (R1 (R1 (L1 (L1 (L1 (R1 (L1 (M1 U1))))))))) = C76 - to (M1 (R1 (R1 (L1 (L1 (L1 (R1 (R1 (M1 U1))))))))) = C77 - to (M1 (R1 (R1 (L1 (L1 (R1 (L1 (M1 U1)))))))) = C78 - to (M1 (R1 (R1 (L1 (L1 (R1 (R1 (L1 (M1 U1))))))))) = C79 - to (M1 (R1 (R1 (L1 (L1 (R1 (R1 (R1 (M1 U1))))))))) = C80 - to (M1 (R1 (R1 (L1 (R1 (L1 (L1 (M1 U1)))))))) = C81 - to (M1 (R1 (R1 (L1 (R1 (L1 (R1 (L1 (M1 U1))))))))) = C82 - to (M1 (R1 (R1 (L1 (R1 (L1 (R1 (R1 (M1 U1))))))))) = C83 - to (M1 (R1 (R1 (L1 (R1 (R1 (L1 (M1 U1)))))))) = C84 - to (M1 (R1 (R1 (L1 (R1 (R1 (R1 (L1 (M1 U1))))))))) = C85 - to (M1 (R1 (R1 (L1 (R1 (R1 (R1 (R1 (M1 U1))))))))) = C86 - to (M1 (R1 (R1 (R1 (L1 (L1 (L1 (M1 U1)))))))) = C87 - to (M1 (R1 (R1 (R1 (L1 (L1 (R1 (L1 (M1 U1))))))))) = C88 - to (M1 (R1 (R1 (R1 (L1 (L1 (R1 (R1 (M1 U1))))))))) = C89 - to (M1 (R1 (R1 (R1 (L1 (R1 (L1 (M1 U1)))))))) = C90 - to (M1 (R1 (R1 (R1 (L1 (R1 (R1 (L1 (M1 U1))))))))) = C91 - to (M1 (R1 (R1 (R1 (L1 (R1 (R1 (R1 (M1 U1))))))))) = C92 - to (M1 (R1 (R1 (R1 (R1 (L1 (L1 (M1 U1)))))))) = C93 - to (M1 (R1 (R1 (R1 (R1 (L1 (R1 (L1 (M1 U1))))))))) = C94 - to (M1 (R1 (R1 (R1 (R1 (L1 (R1 (R1 (M1 U1))))))))) = C95 - to (M1 (R1 (R1 (R1 (R1 (R1 (L1 (L1 (M1 U1))))))))) = C96 - to (M1 (R1 (R1 (R1 (R1 (R1 (L1 (R1 (M1 U1))))))))) = C97 - to (M1 (R1 (R1 (R1 (R1 (R1 (R1 (L1 (M1 U1))))))))) = C98 - to (M1 (R1 (R1 (R1 (R1 (R1 (R1 (R1 (M1 U1))))))))) = C99 + from x = M1 (case x of + C0 -> L1 (L1 (L1 (L1 (L1 (L1 (M1 U1)))))) + C1 -> L1 (L1 (L1 (L1 (L1 (R1 (L1 (M1 U1))))))) + C2 -> L1 (L1 (L1 (L1 (L1 (R1 (R1 (M1 U1))))))) + C3 -> L1 (L1 (L1 (L1 (R1 (L1 (M1 U1)))))) + C4 -> L1 (L1 (L1 (L1 (R1 (R1 (L1 (M1 U1))))))) + C5 -> L1 (L1 (L1 (L1 (R1 (R1 (R1 (M1 U1))))))) + C6 -> L1 (L1 (L1 (R1 (L1 (L1 (M1 U1)))))) + C7 -> L1 (L1 (L1 (R1 (L1 (R1 (L1 (M1 U1))))))) + C8 -> L1 (L1 (L1 (R1 (L1 (R1 (R1 (M1 U1))))))) + C9 -> L1 (L1 (L1 (R1 (R1 (L1 (M1 U1)))))) + C10 -> L1 (L1 (L1 (R1 (R1 (R1 (L1 (M1 U1))))))) + C11 -> L1 (L1 (L1 (R1 (R1 (R1 (R1 (M1 U1))))))) + C12 -> L1 (L1 (R1 (L1 (L1 (L1 (M1 U1)))))) + C13 -> L1 (L1 (R1 (L1 (L1 (R1 (L1 (M1 U1))))))) + C14 -> L1 (L1 (R1 (L1 (L1 (R1 (R1 (M1 U1))))))) + C15 -> L1 (L1 (R1 (L1 (R1 (L1 (M1 U1)))))) + C16 -> L1 (L1 (R1 (L1 (R1 (R1 (L1 (M1 U1))))))) + C17 -> L1 (L1 (R1 (L1 (R1 (R1 (R1 (M1 U1))))))) + C18 -> L1 (L1 (R1 (R1 (L1 (L1 (M1 U1)))))) + C19 -> L1 (L1 (R1 (R1 (L1 (R1 (L1 (M1 U1))))))) + C20 -> L1 (L1 (R1 (R1 (L1 (R1 (R1 (M1 U1))))))) + C21 -> L1 (L1 (R1 (R1 (R1 (L1 (L1 (M1 U1))))))) + C22 -> L1 (L1 (R1 (R1 (R1 (L1 (R1 (M1 U1))))))) + C23 -> L1 (L1 (R1 (R1 (R1 (R1 (L1 (M1 U1))))))) + C24 -> L1 (L1 (R1 (R1 (R1 (R1 (R1 (M1 U1))))))) + C25 -> L1 (R1 (L1 (L1 (L1 (L1 (M1 U1)))))) + C26 -> L1 (R1 (L1 (L1 (L1 (R1 (L1 (M1 U1))))))) + C27 -> L1 (R1 (L1 (L1 (L1 (R1 (R1 (M1 U1))))))) + C28 -> L1 (R1 (L1 (L1 (R1 (L1 (M1 U1)))))) + C29 -> L1 (R1 (L1 (L1 (R1 (R1 (L1 (M1 U1))))))) + C30 -> L1 (R1 (L1 (L1 (R1 (R1 (R1 (M1 U1))))))) + C31 -> L1 (R1 (L1 (R1 (L1 (L1 (M1 U1)))))) + C32 -> L1 (R1 (L1 (R1 (L1 (R1 (L1 (M1 U1))))))) + C33 -> L1 (R1 (L1 (R1 (L1 (R1 (R1 (M1 U1))))))) + C34 -> L1 (R1 (L1 (R1 (R1 (L1 (M1 U1)))))) + C35 -> L1 (R1 (L1 (R1 (R1 (R1 (L1 (M1 U1))))))) + C36 -> L1 (R1 (L1 (R1 (R1 (R1 (R1 (M1 U1))))))) + C37 -> L1 (R1 (R1 (L1 (L1 (L1 (M1 U1)))))) + C38 -> L1 (R1 (R1 (L1 (L1 (R1 (L1 (M1 U1))))))) + C39 -> L1 (R1 (R1 (L1 (L1 (R1 (R1 (M1 U1))))))) + C40 -> L1 (R1 (R1 (L1 (R1 (L1 (M1 U1)))))) + C41 -> L1 (R1 (R1 (L1 (R1 (R1 (L1 (M1 U1))))))) + C42 -> L1 (R1 (R1 (L1 (R1 (R1 (R1 (M1 U1))))))) + C43 -> L1 (R1 (R1 (R1 (L1 (L1 (M1 U1)))))) + C44 -> L1 (R1 (R1 (R1 (L1 (R1 (L1 (M1 U1))))))) + C45 -> L1 (R1 (R1 (R1 (L1 (R1 (R1 (M1 U1))))))) + C46 -> L1 (R1 (R1 (R1 (R1 (L1 (L1 (M1 U1))))))) + C47 -> L1 (R1 (R1 (R1 (R1 (L1 (R1 (M1 U1))))))) + C48 -> L1 (R1 (R1 (R1 (R1 (R1 (L1 (M1 U1))))))) + C49 -> L1 (R1 (R1 (R1 (R1 (R1 (R1 (M1 U1))))))) + C50 -> R1 (L1 (L1 (L1 (L1 (L1 (M1 U1)))))) + C51 -> R1 (L1 (L1 (L1 (L1 (R1 (L1 (M1 U1))))))) + C52 -> R1 (L1 (L1 (L1 (L1 (R1 (R1 (M1 U1))))))) + C53 -> R1 (L1 (L1 (L1 (R1 (L1 (M1 U1)))))) + C54 -> R1 (L1 (L1 (L1 (R1 (R1 (L1 (M1 U1))))))) + C55 -> R1 (L1 (L1 (L1 (R1 (R1 (R1 (M1 U1))))))) + C56 -> R1 (L1 (L1 (R1 (L1 (L1 (M1 U1)))))) + C57 -> R1 (L1 (L1 (R1 (L1 (R1 (L1 (M1 U1))))))) + C58 -> R1 (L1 (L1 (R1 (L1 (R1 (R1 (M1 U1))))))) + C59 -> R1 (L1 (L1 (R1 (R1 (L1 (M1 U1)))))) + C60 -> R1 (L1 (L1 (R1 (R1 (R1 (L1 (M1 U1))))))) + C61 -> R1 (L1 (L1 (R1 (R1 (R1 (R1 (M1 U1))))))) + C62 -> R1 (L1 (R1 (L1 (L1 (L1 (M1 U1)))))) + C63 -> R1 (L1 (R1 (L1 (L1 (R1 (L1 (M1 U1))))))) + C64 -> R1 (L1 (R1 (L1 (L1 (R1 (R1 (M1 U1))))))) + C65 -> R1 (L1 (R1 (L1 (R1 (L1 (M1 U1)))))) + C66 -> R1 (L1 (R1 (L1 (R1 (R1 (L1 (M1 U1))))))) + C67 -> R1 (L1 (R1 (L1 (R1 (R1 (R1 (M1 U1))))))) + C68 -> R1 (L1 (R1 (R1 (L1 (L1 (M1 U1)))))) + C69 -> R1 (L1 (R1 (R1 (L1 (R1 (L1 (M1 U1))))))) + C70 -> R1 (L1 (R1 (R1 (L1 (R1 (R1 (M1 U1))))))) + C71 -> R1 (L1 (R1 (R1 (R1 (L1 (L1 (M1 U1))))))) + C72 -> R1 (L1 (R1 (R1 (R1 (L1 (R1 (M1 U1))))))) + C73 -> R1 (L1 (R1 (R1 (R1 (R1 (L1 (M1 U1))))))) + C74 -> R1 (L1 (R1 (R1 (R1 (R1 (R1 (M1 U1))))))) + C75 -> R1 (R1 (L1 (L1 (L1 (L1 (M1 U1)))))) + C76 -> R1 (R1 (L1 (L1 (L1 (R1 (L1 (M1 U1))))))) + C77 -> R1 (R1 (L1 (L1 (L1 (R1 (R1 (M1 U1))))))) + C78 -> R1 (R1 (L1 (L1 (R1 (L1 (M1 U1)))))) + C79 -> R1 (R1 (L1 (L1 (R1 (R1 (L1 (M1 U1))))))) + C80 -> R1 (R1 (L1 (L1 (R1 (R1 (R1 (M1 U1))))))) + C81 -> R1 (R1 (L1 (R1 (L1 (L1 (M1 U1)))))) + C82 -> R1 (R1 (L1 (R1 (L1 (R1 (L1 (M1 U1))))))) + C83 -> R1 (R1 (L1 (R1 (L1 (R1 (R1 (M1 U1))))))) + C84 -> R1 (R1 (L1 (R1 (R1 (L1 (M1 U1)))))) + C85 -> R1 (R1 (L1 (R1 (R1 (R1 (L1 (M1 U1))))))) + C86 -> R1 (R1 (L1 (R1 (R1 (R1 (R1 (M1 U1))))))) + C87 -> R1 (R1 (R1 (L1 (L1 (L1 (M1 U1)))))) + C88 -> R1 (R1 (R1 (L1 (L1 (R1 (L1 (M1 U1))))))) + C89 -> R1 (R1 (R1 (L1 (L1 (R1 (R1 (M1 U1))))))) + C90 -> R1 (R1 (R1 (L1 (R1 (L1 (M1 U1)))))) + C91 -> R1 (R1 (R1 (L1 (R1 (R1 (L1 (M1 U1))))))) + C92 -> R1 (R1 (R1 (L1 (R1 (R1 (R1 (M1 U1))))))) + C93 -> R1 (R1 (R1 (R1 (L1 (L1 (M1 U1)))))) + C94 -> R1 (R1 (R1 (R1 (L1 (R1 (L1 (M1 U1))))))) + C95 -> R1 (R1 (R1 (R1 (L1 (R1 (R1 (M1 U1))))))) + C96 -> R1 (R1 (R1 (R1 (R1 (L1 (L1 (M1 U1))))))) + C97 -> R1 (R1 (R1 (R1 (R1 (L1 (R1 (M1 U1))))))) + C98 -> R1 (R1 (R1 (R1 (R1 (R1 (L1 (M1 U1))))))) + C99 -> R1 (R1 (R1 (R1 (R1 (R1 (R1 (M1 U1)))))))) + to (M1 x) = case x of + L1 (L1 (L1 (L1 (L1 (L1 (M1 U1)))))) -> C0 + L1 (L1 (L1 (L1 (L1 (R1 (L1 (M1 U1))))))) -> C1 + L1 (L1 (L1 (L1 (L1 (R1 (R1 (M1 U1))))))) -> C2 + L1 (L1 (L1 (L1 (R1 (L1 (M1 U1)))))) -> C3 + L1 (L1 (L1 (L1 (R1 (R1 (L1 (M1 U1))))))) -> C4 + L1 (L1 (L1 (L1 (R1 (R1 (R1 (M1 U1))))))) -> C5 + L1 (L1 (L1 (R1 (L1 (L1 (M1 U1)))))) -> C6 + L1 (L1 (L1 (R1 (L1 (R1 (L1 (M1 U1))))))) -> C7 + L1 (L1 (L1 (R1 (L1 (R1 (R1 (M1 U1))))))) -> C8 + L1 (L1 (L1 (R1 (R1 (L1 (M1 U1)))))) -> C9 + L1 (L1 (L1 (R1 (R1 (R1 (L1 (M1 U1))))))) -> C10 + L1 (L1 (L1 (R1 (R1 (R1 (R1 (M1 U1))))))) -> C11 + L1 (L1 (R1 (L1 (L1 (L1 (M1 U1)))))) -> C12 + L1 (L1 (R1 (L1 (L1 (R1 (L1 (M1 U1))))))) -> C13 + L1 (L1 (R1 (L1 (L1 (R1 (R1 (M1 U1))))))) -> C14 + L1 (L1 (R1 (L1 (R1 (L1 (M1 U1)))))) -> C15 + L1 (L1 (R1 (L1 (R1 (R1 (L1 (M1 U1))))))) -> C16 + L1 (L1 (R1 (L1 (R1 (R1 (R1 (M1 U1))))))) -> C17 + L1 (L1 (R1 (R1 (L1 (L1 (M1 U1)))))) -> C18 + L1 (L1 (R1 (R1 (L1 (R1 (L1 (M1 U1))))))) -> C19 + L1 (L1 (R1 (R1 (L1 (R1 (R1 (M1 U1))))))) -> C20 + L1 (L1 (R1 (R1 (R1 (L1 (L1 (M1 U1))))))) -> C21 + L1 (L1 (R1 (R1 (R1 (L1 (R1 (M1 U1))))))) -> C22 + L1 (L1 (R1 (R1 (R1 (R1 (L1 (M1 U1))))))) -> C23 + L1 (L1 (R1 (R1 (R1 (R1 (R1 (M1 U1))))))) -> C24 + L1 (R1 (L1 (L1 (L1 (L1 (M1 U1)))))) -> C25 + L1 (R1 (L1 (L1 (L1 (R1 (L1 (M1 U1))))))) -> C26 + L1 (R1 (L1 (L1 (L1 (R1 (R1 (M1 U1))))))) -> C27 + L1 (R1 (L1 (L1 (R1 (L1 (M1 U1)))))) -> C28 + L1 (R1 (L1 (L1 (R1 (R1 (L1 (M1 U1))))))) -> C29 + L1 (R1 (L1 (L1 (R1 (R1 (R1 (M1 U1))))))) -> C30 + L1 (R1 (L1 (R1 (L1 (L1 (M1 U1)))))) -> C31 + L1 (R1 (L1 (R1 (L1 (R1 (L1 (M1 U1))))))) -> C32 + L1 (R1 (L1 (R1 (L1 (R1 (R1 (M1 U1))))))) -> C33 + L1 (R1 (L1 (R1 (R1 (L1 (M1 U1)))))) -> C34 + L1 (R1 (L1 (R1 (R1 (R1 (L1 (M1 U1))))))) -> C35 + L1 (R1 (L1 (R1 (R1 (R1 (R1 (M1 U1))))))) -> C36 + L1 (R1 (R1 (L1 (L1 (L1 (M1 U1)))))) -> C37 + L1 (R1 (R1 (L1 (L1 (R1 (L1 (M1 U1))))))) -> C38 + L1 (R1 (R1 (L1 (L1 (R1 (R1 (M1 U1))))))) -> C39 + L1 (R1 (R1 (L1 (R1 (L1 (M1 U1)))))) -> C40 + L1 (R1 (R1 (L1 (R1 (R1 (L1 (M1 U1))))))) -> C41 + L1 (R1 (R1 (L1 (R1 (R1 (R1 (M1 U1))))))) -> C42 + L1 (R1 (R1 (R1 (L1 (L1 (M1 U1)))))) -> C43 + L1 (R1 (R1 (R1 (L1 (R1 (L1 (M1 U1))))))) -> C44 + L1 (R1 (R1 (R1 (L1 (R1 (R1 (M1 U1))))))) -> C45 + L1 (R1 (R1 (R1 (R1 (L1 (L1 (M1 U1))))))) -> C46 + L1 (R1 (R1 (R1 (R1 (L1 (R1 (M1 U1))))))) -> C47 + L1 (R1 (R1 (R1 (R1 (R1 (L1 (M1 U1))))))) -> C48 + L1 (R1 (R1 (R1 (R1 (R1 (R1 (M1 U1))))))) -> C49 + R1 (L1 (L1 (L1 (L1 (L1 (M1 U1)))))) -> C50 + R1 (L1 (L1 (L1 (L1 (R1 (L1 (M1 U1))))))) -> C51 + R1 (L1 (L1 (L1 (L1 (R1 (R1 (M1 U1))))))) -> C52 + R1 (L1 (L1 (L1 (R1 (L1 (M1 U1)))))) -> C53 + R1 (L1 (L1 (L1 (R1 (R1 (L1 (M1 U1))))))) -> C54 + R1 (L1 (L1 (L1 (R1 (R1 (R1 (M1 U1))))))) -> C55 + R1 (L1 (L1 (R1 (L1 (L1 (M1 U1)))))) -> C56 + R1 (L1 (L1 (R1 (L1 (R1 (L1 (M1 U1))))))) -> C57 + R1 (L1 (L1 (R1 (L1 (R1 (R1 (M1 U1))))))) -> C58 + R1 (L1 (L1 (R1 (R1 (L1 (M1 U1)))))) -> C59 + R1 (L1 (L1 (R1 (R1 (R1 (L1 (M1 U1))))))) -> C60 + R1 (L1 (L1 (R1 (R1 (R1 (R1 (M1 U1))))))) -> C61 + R1 (L1 (R1 (L1 (L1 (L1 (M1 U1)))))) -> C62 + R1 (L1 (R1 (L1 (L1 (R1 (L1 (M1 U1))))))) -> C63 + R1 (L1 (R1 (L1 (L1 (R1 (R1 (M1 U1))))))) -> C64 + R1 (L1 (R1 (L1 (R1 (L1 (M1 U1)))))) -> C65 + R1 (L1 (R1 (L1 (R1 (R1 (L1 (M1 U1))))))) -> C66 + R1 (L1 (R1 (L1 (R1 (R1 (R1 (M1 U1))))))) -> C67 + R1 (L1 (R1 (R1 (L1 (L1 (M1 U1)))))) -> C68 + R1 (L1 (R1 (R1 (L1 (R1 (L1 (M1 U1))))))) -> C69 + R1 (L1 (R1 (R1 (L1 (R1 (R1 (M1 U1))))))) -> C70 + R1 (L1 (R1 (R1 (R1 (L1 (L1 (M1 U1))))))) -> C71 + R1 (L1 (R1 (R1 (R1 (L1 (R1 (M1 U1))))))) -> C72 + R1 (L1 (R1 (R1 (R1 (R1 (L1 (M1 U1))))))) -> C73 + R1 (L1 (R1 (R1 (R1 (R1 (R1 (M1 U1))))))) -> C74 + R1 (R1 (L1 (L1 (L1 (L1 (M1 U1)))))) -> C75 + R1 (R1 (L1 (L1 (L1 (R1 (L1 (M1 U1))))))) -> C76 + R1 (R1 (L1 (L1 (L1 (R1 (R1 (M1 U1))))))) -> C77 + R1 (R1 (L1 (L1 (R1 (L1 (M1 U1)))))) -> C78 + R1 (R1 (L1 (L1 (R1 (R1 (L1 (M1 U1))))))) -> C79 + R1 (R1 (L1 (L1 (R1 (R1 (R1 (M1 U1))))))) -> C80 + R1 (R1 (L1 (R1 (L1 (L1 (M1 U1)))))) -> C81 + R1 (R1 (L1 (R1 (L1 (R1 (L1 (M1 U1))))))) -> C82 + R1 (R1 (L1 (R1 (L1 (R1 (R1 (M1 U1))))))) -> C83 + R1 (R1 (L1 (R1 (R1 (L1 (M1 U1)))))) -> C84 + R1 (R1 (L1 (R1 (R1 (R1 (L1 (M1 U1))))))) -> C85 + R1 (R1 (L1 (R1 (R1 (R1 (R1 (M1 U1))))))) -> C86 + R1 (R1 (R1 (L1 (L1 (L1 (M1 U1)))))) -> C87 + R1 (R1 (R1 (L1 (L1 (R1 (L1 (M1 U1))))))) -> C88 + R1 (R1 (R1 (L1 (L1 (R1 (R1 (M1 U1))))))) -> C89 + R1 (R1 (R1 (L1 (R1 (L1 (M1 U1)))))) -> C90 + R1 (R1 (R1 (L1 (R1 (R1 (L1 (M1 U1))))))) -> C91 + R1 (R1 (R1 (L1 (R1 (R1 (R1 (M1 U1))))))) -> C92 + R1 (R1 (R1 (R1 (L1 (L1 (M1 U1)))))) -> C93 + R1 (R1 (R1 (R1 (L1 (R1 (L1 (M1 U1))))))) -> C94 + R1 (R1 (R1 (R1 (L1 (R1 (R1 (M1 U1))))))) -> C95 + R1 (R1 (R1 (R1 (R1 (L1 (L1 (M1 U1))))))) -> C96 + R1 (R1 (R1 (R1 (R1 (L1 (R1 (M1 U1))))))) -> C97 + R1 (R1 (R1 (R1 (R1 (R1 (L1 (M1 U1))))))) -> C98 + R1 (R1 (R1 (R1 (R1 (R1 (R1 (M1 U1))))))) -> C99 type Rep_BigSum = D1 ('MetaData diff --git a/testsuite/tests/perf/compiler/all.T b/testsuite/tests/perf/compiler/all.T index a09499915a..230cff5ac8 100644 --- a/testsuite/tests/perf/compiler/all.T +++ b/testsuite/tests/perf/compiler/all.T @@ -545,7 +545,7 @@ test('T5642', # 2014-12-10: 641085256 Improvements in constraints solver # 2016-04-06: 462677300 - (wordsize(64), 1300685592, 10)]) + (wordsize(64), 916484672, 10)]) # prev: 1300000000 # 2014-07-17: 1358833928 (general round of updates) # 2014-08-07: 1402242360 (caused by 1fc60ea) @@ -558,8 +558,9 @@ test('T5642', # 2014-12-10: 1282916024 Improvements in constraints solver # 2015-10-28: 1412808976 Emit Typeable at definition site # 2015-11-22: 1071915072 Use TypeLits in the metadata encoding - # 2016-02-08: 950004816 Pattern match checker re-rework + # 2016-02-08: 950004816 Pattern match checker re-rework # 2016-05-12: 1300685592 Make Generic1 poly-kinded + # 2016-06-05: 916484672 Refactor derived Generic instances to reduce allocations ], compile,['-O']) diff --git a/testsuite/tests/perf/haddock/all.T b/testsuite/tests/perf/haddock/all.T index 3160a8a1e4..3f4926a8f9 100644 --- a/testsuite/tests/perf/haddock/all.T +++ b/testsuite/tests/perf/haddock/all.T @@ -52,7 +52,7 @@ test('haddock.base', test('haddock.Cabal', [unless(in_tree_compiler(), skip), req_haddock ,stats_num_field('bytes allocated', - [(wordsize(64), 11805238152, 5) + [(wordsize(64), 10997887320, 5) # 2012-08-14: 3255435248 (amd64/Linux) # 2012-08-29: 3324606664 (amd64/Linux, new codegen) # 2012-10-08: 3373401360 (amd64/Linux) @@ -81,6 +81,7 @@ test('haddock.Cabal', # 2016-04-06: 11542374816 (amd64/Linux) - CSE improvements and others # 2016-04-07: 10963514352 (amd64/Linux) - Revert to what phabricator claims # 2016-05-22: 11805238152 (amd64/Linux) - Make Generic1 poly-kinded + # 2016-06-05: 10997887320 (amd64/Linux) - Refactor derived Generic instances to reduce allocations ,(platform('i386-unknown-mingw32'), 3293415576, 5) # 2012-10-30: 1733638168 (x86/Windows) @@ -88,7 +89,7 @@ test('haddock.Cabal', # 2014-01-28: 1966911336 (x86/Windows) # 2014-04-24: 2052220292 (x86/Windows) # 2014-12-01: 3088635556 (x86/Windows) - # 2015-01-20: 3293415576 + # 2015-01-20: 3293415576 ,(wordsize(32), 6268156056, 5)]) # 2012-08-14: 1648610180 (x86/OSX) |