From 8d5cf8bf584fd4849917c29d82dcf46ee75dd035 Mon Sep 17 00:00:00 2001 From: Luke Maurer Date: Wed, 1 Feb 2017 11:56:01 -0500 Subject: Join points This major patch implements Join Points, as described in https://ghc.haskell.org/trac/ghc/wiki/SequentCore. You have to read that page, and especially the paper it links to, to understand what's going on; but it is very cool. It's Luke Maurer's work, but done in close collaboration with Simon PJ. This Phab is a squash-merge of wip/join-points branch of http://github.com/lukemaurer/ghc. There are many, many interdependent changes. Reviewers: goldfire, mpickering, bgamari, simonmar, dfeuer, austin Subscribers: simonpj, dfeuer, mpickering, Mikolaj, thomie Differential Revision: https://phabricator.haskell.org/D2853 --- testsuite/tests/numeric/should_compile/T7116.stdout | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) (limited to 'testsuite/tests/numeric') diff --git a/testsuite/tests/numeric/should_compile/T7116.stdout b/testsuite/tests/numeric/should_compile/T7116.stdout index 7fe4d93d87..bc2f85b85f 100644 --- a/testsuite/tests/numeric/should_compile/T7116.stdout +++ b/testsuite/tests/numeric/should_compile/T7116.stdout @@ -1,8 +1,9 @@ ==================== Tidy Core ==================== -Result size of Tidy Core = {terms: 50, types: 25, coercions: 0} +Result size of Tidy Core + = {terms: 50, types: 25, coercions: 0, joins: 0/0} --- RHS size: {terms: 1, types: 0, coercions: 0} +-- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0} T7116.$trModule4 :: GHC.Prim.Addr# [GblId, Caf=NoCafRefs, @@ -10,7 +11,7 @@ T7116.$trModule4 :: GHC.Prim.Addr# WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 20 0}] T7116.$trModule4 = "main"# --- RHS size: {terms: 2, types: 0, coercions: 0} +-- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0} T7116.$trModule3 :: GHC.Types.TrName [GblId, Caf=NoCafRefs, @@ -19,7 +20,7 @@ T7116.$trModule3 :: GHC.Types.TrName WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 20}] T7116.$trModule3 = GHC.Types.TrNameS T7116.$trModule4 --- RHS size: {terms: 1, types: 0, coercions: 0} +-- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0} T7116.$trModule2 :: GHC.Prim.Addr# [GblId, Caf=NoCafRefs, @@ -27,7 +28,7 @@ T7116.$trModule2 :: GHC.Prim.Addr# WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 30 0}] T7116.$trModule2 = "T7116"# --- RHS size: {terms: 2, types: 0, coercions: 0} +-- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0} T7116.$trModule1 :: GHC.Types.TrName [GblId, Caf=NoCafRefs, @@ -36,7 +37,7 @@ T7116.$trModule1 :: GHC.Types.TrName WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 20}] T7116.$trModule1 = GHC.Types.TrNameS T7116.$trModule2 --- RHS size: {terms: 3, types: 0, coercions: 0} +-- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0} T7116.$trModule :: GHC.Types.Module [GblId, Caf=NoCafRefs, @@ -46,7 +47,7 @@ T7116.$trModule :: GHC.Types.Module T7116.$trModule = GHC.Types.Module T7116.$trModule3 T7116.$trModule1 --- RHS size: {terms: 8, types: 3, coercions: 0} +-- RHS size: {terms: 8, types: 3, coercions: 0, joins: 0/0} dr :: Double -> Double [GblId, Arity=1, @@ -63,7 +64,7 @@ dr = \ (x :: Double) -> case x of { GHC.Types.D# x1 -> GHC.Types.D# (GHC.Prim.+## x1 x1) } --- RHS size: {terms: 8, types: 3, coercions: 0} +-- RHS size: {terms: 8, types: 3, coercions: 0, joins: 0/0} dl :: Double -> Double [GblId, Arity=1, @@ -78,7 +79,7 @@ dl = \ (x :: Double) -> case x of { GHC.Types.D# y -> GHC.Types.D# (GHC.Prim.+## y y) } --- RHS size: {terms: 8, types: 3, coercions: 0} +-- RHS size: {terms: 8, types: 3, coercions: 0, joins: 0/0} fr :: Float -> Float [GblId, Arity=1, @@ -97,7 +98,7 @@ fr = GHC.Types.F# (GHC.Prim.plusFloat# x1 x1) } --- RHS size: {terms: 8, types: 3, coercions: 0} +-- RHS size: {terms: 8, types: 3, coercions: 0, joins: 0/0} fl :: Float -> Float [GblId, Arity=1, -- cgit v1.2.1