diff options
author | Ben Gamari <bgamari.foss@gmail.com> | 2017-03-03 15:47:47 -0500 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2017-03-03 15:47:48 -0500 |
commit | c1dacb8a9c18677495bbe7e41391f8ca7a573070 (patch) | |
tree | 9f3e33766337e42511b75795b264bc4393c08ade /testsuite/tests/roles | |
parent | a694cee77b64235b42029fea248453ddf6b17d17 (diff) | |
download | haskell-c1dacb8a9c18677495bbe7e41391f8ca7a573070.tar.gz |
Produce KindReps for common kinds in GHC.Types
Unfortunately this comes with a fair bit of implementation cost. Perhaps
some refactoring would help, but in the interest of getting 8.2 out the
door I'm pushing as-is.
While this doesn't have nearly the effect on compiler allocations
that D3166 has, it's still nothing to sneeze at. nofib shows,
```
------------------------------------------------------------------------
Program master D3166 D3219
------------------------------------------------------------------------
-1 s.d. ----- -3.555% -4.081%
+1 s.d. ----- +1.937% +1.593%
Average ----- -0.847% -1.285%
```
Test Plan: Validate
Reviewers: austin
Subscribers: thomie, simonmar
Differential Revision: https://phabricator.haskell.org/D3219
Diffstat (limited to 'testsuite/tests/roles')
7 files changed, 45 insertions, 66 deletions
diff --git a/testsuite/tests/roles/should_compile/Roles1.stderr b/testsuite/tests/roles/should_compile/Roles1.stderr index ae4570ab47..e9f7823aae 100644 --- a/testsuite/tests/roles/should_compile/Roles1.stderr +++ b/testsuite/tests/roles/should_compile/Roles1.stderr @@ -64,7 +64,7 @@ Roles1.$tcT5 Roles1.$trModule (GHC.Types.TrNameS "T5"#) 0 - $krep + GHC.Types.krep$*Arr* Roles1.$tc'K5 = GHC.Types.TyCon 5548842497263642061## @@ -112,7 +112,7 @@ Roles1.$tcT2 Roles1.$trModule (GHC.Types.TrNameS "T2"#) 0 - $krep + GHC.Types.krep$*Arr* Roles1.$tc'K2 = GHC.Types.TyCon 11054915488163123841## @@ -128,7 +128,7 @@ Roles1.$tcT1 Roles1.$trModule (GHC.Types.TrNameS "T1"#) 0 - $krep + GHC.Types.krep$*Arr* Roles1.$tc'K1 = GHC.Types.TyCon 1265606750138351672## @@ -143,15 +143,16 @@ $krep [InlPrag=[~]] = GHC.Types.KindRepVar 0 $krep [InlPrag=[~]] = GHC.Types.KindRepVar 1 $krep [InlPrag=[~]] = GHC.Types.KindRepVar 2 $krep [InlPrag=[~]] = GHC.Types.KindRepApp $krep $krep +$krep [InlPrag=[~]] + = GHC.Types.KindRepFun $krep GHC.Types.krep$*Arr* +$krep [InlPrag=[~]] = GHC.Types.KindRepFun $krep GHC.Types.krep$* $krep [InlPrag=[~]] = GHC.Types.KindRepFun $krep $krep $krep [InlPrag=[~]] = GHC.Types.KindRepFun $krep $krep $krep [InlPrag=[~]] = GHC.Types.KindRepFun $krep $krep $krep [InlPrag=[~]] = GHC.Types.KindRepFun $krep $krep $krep [InlPrag=[~]] = GHC.Types.KindRepFun $krep $krep -$krep [InlPrag=[~]] = GHC.Types.KindRepFun $krep $krep -$krep [InlPrag=[~]] = GHC.Types.KindRepFun $krep $krep -$krep [InlPrag=[~]] = GHC.Types.KindRepFun $krep $krep -$krep [InlPrag=[~]] = GHC.Types.KindRepFun $krep $krep +$krep [InlPrag=[~]] + = GHC.Types.KindRepFun GHC.Types.krep$*Arr* GHC.Types.krep$*Arr* $krep [InlPrag=[~]] = GHC.Types.KindRepTyConApp Roles1.$tcT7 ((:) $krep ((:) $krep ((:) $krep []))) @@ -161,7 +162,6 @@ $krep [InlPrag=[~]] = GHC.Types.KindRepTyConApp Roles1.$tcT4 ((:) $krep ((:) $krep [])) $krep [InlPrag=[~]] = GHC.Types.KindRepTyConApp Roles1.$tcT3 ((:) $krep ((:) $krep [])) -$krep [InlPrag=[~]] = GHC.Types.KindRepTYPE GHC.Types.LiftedRep $krep [InlPrag=[~]] = GHC.Types.KindRepTyConApp Roles1.$tcT5 ((:) $krep []) $krep [InlPrag=[~]] diff --git a/testsuite/tests/roles/should_compile/Roles13.stderr b/testsuite/tests/roles/should_compile/Roles13.stderr index 6a5e31d9c5..6b7bb557f4 100644 --- a/testsuite/tests/roles/should_compile/Roles13.stderr +++ b/testsuite/tests/roles/should_compile/Roles13.stderr @@ -1,7 +1,7 @@ ==================== Tidy Core ==================== Result size of Tidy Core - = {terms: 105, types: 40, coercions: 5, joins: 0/0} + = {terms: 98, types: 38, coercions: 5, joins: 0/0} -- RHS size: {terms: 2, types: 2, coercions: 0, joins: 0/0} convert1 :: Wrap Age -> Wrap Age @@ -51,17 +51,7 @@ $krep -- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0} $krep1 :: GHC.Types.KindRep [GblId, Caf=NoCafRefs] -$krep1 = GHC.Types.KindRepTYPE GHC.Types.LiftedRep - --- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0} -$krep2 :: GHC.Types.KindRep -[GblId, Caf=NoCafRefs] -$krep2 = GHC.Types.KindRepFun $krep1 $krep1 - --- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0} -$krep3 :: GHC.Types.KindRep -[GblId, Caf=NoCafRefs] -$krep3 = GHC.Types.KindRepVar 0# +$krep1 = GHC.Types.KindRepVar 0# -- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0} $tcAge1 :: GHC.Prim.Addr# @@ -75,7 +65,7 @@ $tcAge2 = GHC.Types.TrNameS $tcAge1 -- RHS size: {terms: 7, types: 0, coercions: 0, joins: 0/0} Roles13.$tcAge :: GHC.Types.TyCon -[GblId, Caf=NoCafRefs] +[GblId] Roles13.$tcAge = GHC.Types.TyCon 3456257068627873222## @@ -83,19 +73,19 @@ Roles13.$tcAge Roles13.$trModule $tcAge2 0# - $krep1 + GHC.Types.krep$* -- RHS size: {terms: 3, types: 1, coercions: 0, joins: 0/0} -$krep4 :: GHC.Types.KindRep -[GblId, Caf=NoCafRefs] -$krep4 +$krep2 :: GHC.Types.KindRep +[GblId] +$krep2 = GHC.Types.KindRepTyConApp Roles13.$tcAge (GHC.Types.[] @ GHC.Types.KindRep) -- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0} -$krep5 :: GHC.Types.KindRep +$krep3 :: GHC.Types.KindRep [GblId] -$krep5 = GHC.Types.KindRepFun $krep $krep4 +$krep3 = GHC.Types.KindRepFun $krep $krep2 -- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0} $tc'MkAge1 :: GHC.Prim.Addr# @@ -117,7 +107,7 @@ Roles13.$tc'MkAge Roles13.$trModule $tc'MkAge2 0# - $krep5 + $krep3 -- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0} $tcWrap1 :: GHC.Prim.Addr# @@ -131,7 +121,7 @@ $tcWrap2 = GHC.Types.TrNameS $tcWrap1 -- RHS size: {terms: 7, types: 0, coercions: 0, joins: 0/0} Roles13.$tcWrap :: GHC.Types.TyCon -[GblId, Caf=NoCafRefs] +[GblId] Roles13.$tcWrap = GHC.Types.TyCon 13773534096961634492## @@ -139,24 +129,24 @@ Roles13.$tcWrap Roles13.$trModule $tcWrap2 0# - $krep2 + GHC.Types.krep$*Arr* -- RHS size: {terms: 3, types: 2, coercions: 0, joins: 0/0} -$krep6 :: [GHC.Types.KindRep] +$krep4 :: [GHC.Types.KindRep] [GblId, Caf=NoCafRefs] -$krep6 +$krep4 = GHC.Types.: - @ GHC.Types.KindRep $krep3 (GHC.Types.[] @ GHC.Types.KindRep) + @ GHC.Types.KindRep $krep1 (GHC.Types.[] @ GHC.Types.KindRep) -- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0} -$krep7 :: GHC.Types.KindRep -[GblId, Caf=NoCafRefs] -$krep7 = GHC.Types.KindRepTyConApp Roles13.$tcWrap $krep6 +$krep5 :: GHC.Types.KindRep +[GblId] +$krep5 = GHC.Types.KindRepTyConApp Roles13.$tcWrap $krep4 -- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0} -$krep8 :: GHC.Types.KindRep -[GblId, Caf=NoCafRefs] -$krep8 = GHC.Types.KindRepFun $krep3 $krep7 +$krep6 :: GHC.Types.KindRep +[GblId] +$krep6 = GHC.Types.KindRepFun $krep1 $krep5 -- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0} $tc'MkWrap1 :: GHC.Prim.Addr# @@ -170,7 +160,7 @@ $tc'MkWrap2 = GHC.Types.TrNameS $tc'MkWrap1 -- RHS size: {terms: 7, types: 0, coercions: 0, joins: 0/0} Roles13.$tc'MkWrap :: GHC.Types.TyCon -[GblId, Caf=NoCafRefs] +[GblId] Roles13.$tc'MkWrap = GHC.Types.TyCon 15580677875333883466## @@ -178,7 +168,7 @@ Roles13.$tc'MkWrap Roles13.$trModule $tc'MkWrap2 1# - $krep8 + $krep6 diff --git a/testsuite/tests/roles/should_compile/Roles14.stderr b/testsuite/tests/roles/should_compile/Roles14.stderr index 08ca28fecc..ce4ddd3bb7 100644 --- a/testsuite/tests/roles/should_compile/Roles14.stderr +++ b/testsuite/tests/roles/should_compile/Roles14.stderr @@ -19,7 +19,7 @@ Roles12.$tcC2 Roles12.$trModule (GHC.Types.TrNameS "C2"#) 0 - $krep + GHC.Types.krep$*Arr* Roles12.$tc'C:C2 = GHC.Types.TyCon 7087988437584478859## @@ -31,8 +31,6 @@ Roles12.$tc'C:C2 $krep [InlPrag=[~]] = GHC.Types.KindRepVar 0 $krep [InlPrag=[~]] = GHC.Types.KindRepFun $krep $krep $krep [InlPrag=[~]] = GHC.Types.KindRepFun $krep $krep -$krep [InlPrag=[~]] = GHC.Types.KindRepFun $krep $krep -$krep [InlPrag=[~]] = GHC.Types.KindRepTYPE GHC.Types.LiftedRep $krep [InlPrag=[~]] = GHC.Types.KindRepTyConApp Roles12.$tcC2 ((:) $krep []) Roles12.$trModule diff --git a/testsuite/tests/roles/should_compile/Roles2.stderr b/testsuite/tests/roles/should_compile/Roles2.stderr index b96d17330a..23d253eb8e 100644 --- a/testsuite/tests/roles/should_compile/Roles2.stderr +++ b/testsuite/tests/roles/should_compile/Roles2.stderr @@ -18,7 +18,7 @@ Roles2.$tcT2 Roles2.$trModule (GHC.Types.TrNameS "T2"#) 0 - $krep + GHC.Types.krep$*Arr* Roles2.$tc'K2 = GHC.Types.TyCon 17395957229042313563## @@ -34,7 +34,7 @@ Roles2.$tcT1 Roles2.$trModule (GHC.Types.TrNameS "T1"#) 0 - $krep + GHC.Types.krep$*Arr* Roles2.$tc'K1 = GHC.Types.TyCon 16530009231990968394## @@ -46,8 +46,6 @@ Roles2.$tc'K1 $krep [InlPrag=[~]] = GHC.Types.KindRepVar 0 $krep [InlPrag=[~]] = GHC.Types.KindRepFun $krep $krep $krep [InlPrag=[~]] = GHC.Types.KindRepFun $krep $krep -$krep [InlPrag=[~]] = GHC.Types.KindRepFun $krep $krep -$krep [InlPrag=[~]] = GHC.Types.KindRepTYPE GHC.Types.LiftedRep $krep [InlPrag=[~]] = GHC.Types.KindRepTyConApp GHC.Ptr.$tcFunPtr ((:) $krep []) $krep [InlPrag=[~]] diff --git a/testsuite/tests/roles/should_compile/Roles3.stderr b/testsuite/tests/roles/should_compile/Roles3.stderr index 7f9f1a39d9..cc9ce91a52 100644 --- a/testsuite/tests/roles/should_compile/Roles3.stderr +++ b/testsuite/tests/roles/should_compile/Roles3.stderr @@ -40,7 +40,7 @@ Roles3.$tcC4 Roles3.$trModule (GHC.Types.TrNameS "C4"#) 0 - $krep + GHC.Types.krep$*->*->* Roles3.$tcC3 = GHC.Types.TyCon 5076086601454991970## @@ -48,7 +48,7 @@ Roles3.$tcC3 Roles3.$trModule (GHC.Types.TrNameS "C3"#) 0 - $krep + GHC.Types.krep$*->*->* Roles3.$tcC2 = GHC.Types.TyCon 7902873224172523979## @@ -56,7 +56,7 @@ Roles3.$tcC2 Roles3.$trModule (GHC.Types.TrNameS "C2"#) 0 - $krep + GHC.Types.krep$*->*->* Roles3.$tc'C:C2 = GHC.Types.TyCon 11218882737915989529## @@ -72,7 +72,7 @@ Roles3.$tcC1 Roles3.$trModule (GHC.Types.TrNameS "C1"#) 0 - $krep + GHC.Types.krep$*Arr* Roles3.$tc'C:C1 = GHC.Types.TyCon 4508088879886988796## @@ -88,14 +88,12 @@ $krep [InlPrag=[~]] = GHC.Types.KindRepFun $krep $krep $krep [InlPrag=[~]] = GHC.Types.KindRepFun $krep $krep $krep [InlPrag=[~]] = GHC.Types.KindRepFun $krep $krep $krep [InlPrag=[~]] = GHC.Types.KindRepFun $krep $krep -$krep [InlPrag=[~]] = GHC.Types.KindRepFun $krep $krep -$krep [InlPrag=[~]] = GHC.Types.KindRepFun $krep $krep $krep [InlPrag=[~]] = GHC.Types.KindRepTyConApp - Data.Type.Equality.$tc~ ((:) $krep ((:) $krep ((:) $krep []))) + Data.Type.Equality.$tc~ + ((:) GHC.Types.krep$* ((:) $krep ((:) $krep []))) $krep [InlPrag=[~]] = GHC.Types.KindRepTyConApp Roles3.$tcC2 ((:) $krep ((:) $krep [])) -$krep [InlPrag=[~]] = GHC.Types.KindRepTYPE GHC.Types.LiftedRep $krep [InlPrag=[~]] = GHC.Types.KindRepTyConApp Roles3.$tcC1 ((:) $krep []) Roles3.$trModule diff --git a/testsuite/tests/roles/should_compile/Roles4.stderr b/testsuite/tests/roles/should_compile/Roles4.stderr index 205a4d5714..ac9d08b415 100644 --- a/testsuite/tests/roles/should_compile/Roles4.stderr +++ b/testsuite/tests/roles/should_compile/Roles4.stderr @@ -25,7 +25,7 @@ Roles4.$tcC3 Roles4.$trModule (GHC.Types.TrNameS "C3"#) 0 - $krep + GHC.Types.krep$*Arr* Roles4.$tc'C:C3 = GHC.Types.TyCon 3133378316178104365## @@ -41,7 +41,7 @@ Roles4.$tcC1 Roles4.$trModule (GHC.Types.TrNameS "C1"#) 0 - $krep + GHC.Types.krep$*Arr* Roles4.$tc'C:C1 = GHC.Types.TyCon 3870707671502302648## @@ -55,8 +55,6 @@ $krep [InlPrag=[~]] = GHC.Types.KindRepFun $krep $krep $krep [InlPrag=[~]] = GHC.Types.KindRepFun $krep $krep $krep [InlPrag=[~]] = GHC.Types.KindRepFun $krep $krep $krep [InlPrag=[~]] = GHC.Types.KindRepFun $krep $krep -$krep [InlPrag=[~]] = GHC.Types.KindRepFun $krep $krep -$krep [InlPrag=[~]] = GHC.Types.KindRepTYPE GHC.Types.LiftedRep $krep [InlPrag=[~]] = GHC.Types.KindRepTyConApp GHC.Types.$tc[] ((:) $krep []) $krep [InlPrag=[~]] diff --git a/testsuite/tests/roles/should_compile/T8958.stderr b/testsuite/tests/roles/should_compile/T8958.stderr index 22cc6ca7b7..bb20002c26 100644 --- a/testsuite/tests/roles/should_compile/T8958.stderr +++ b/testsuite/tests/roles/should_compile/T8958.stderr @@ -27,7 +27,7 @@ T8958.$tcMap T8958.$trModule (GHC.Types.TrNameS "Map"#) 0 - $krep + GHC.Types.krep$*->*->* T8958.$tc'MkMap = GHC.Types.TyCon 2942839876828444488## @@ -43,7 +43,7 @@ T8958.$tcRepresentational T8958.$trModule (GHC.Types.TrNameS "Representational"#) 0 - $krep + GHC.Types.krep$*Arr* T8958.$tc'C:Representational = GHC.Types.TyCon 2358772282532242424## @@ -59,7 +59,7 @@ T8958.$tcNominal T8958.$trModule (GHC.Types.TrNameS "Nominal"#) 0 - $krep + GHC.Types.krep$*Arr* T8958.$tc'C:Nominal = GHC.Types.TyCon 10562260635335201742## @@ -71,8 +71,6 @@ T8958.$tc'C:Nominal $krep [InlPrag=[~]] = GHC.Types.KindRepVar 0 $krep [InlPrag=[~]] = GHC.Types.KindRepVar 1 $krep [InlPrag=[~]] = GHC.Types.KindRepFun $krep $krep -$krep [InlPrag=[~]] = GHC.Types.KindRepFun $krep $krep -$krep [InlPrag=[~]] = GHC.Types.KindRepFun $krep $krep $krep [InlPrag=[~]] = GHC.Types.KindRepTyConApp GHC.Tuple.$tc(,) @@ -83,7 +81,6 @@ $krep [InlPrag=[~]] T8958.$tcMap ((:) @ GHC.Types.KindRep $krep ((:) @ GHC.Types.KindRep $krep [] @ GHC.Types.KindRep)) -$krep [InlPrag=[~]] = GHC.Types.KindRepTYPE GHC.Types.LiftedRep $krep [InlPrag=[~]] = GHC.Types.KindRepTyConApp GHC.Types.$tc[] |