Created
October 19, 2017 09:14
-
-
Save Tehnix/fbf619d1e3f8966a9167229bbf15b946 to your computer and use it in GitHub Desktop.
stack ghc -- -ddump-rule-rewrites -O2 LengthTest.hs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
λ .testing/Haskell stack ghc -- -ddump-rule-rewrites -O2 LengthTest.hs | |
[1 of 1] Compiling LengthTest ( LengthTest.hs, LengthTest.o ) | |
Rule fired | |
Rule: Class op length | |
Before: Data.Foldable.length | |
TyArg [] | |
ValArg Data.Foldable.$fFoldable[] | |
TyArg GHC.Integer.Type.Integer | |
ValArg GHC.Base.build | |
@ GHC.Integer.Type.Integer | |
(\ (@ a_d2iw) | |
(c_d2ix [OS=OneShot] | |
:: GHC.Integer.Type.Integer -> a_d2iw -> a_d2iw) | |
(n_d2iy [OS=OneShot] :: a_d2iw) -> | |
c_d2ix 1 (c_d2ix 2 (c_d2ix 3 n_d2iy))) | |
After: GHC.List.length | |
Cont: Stop[RuleArgCtxt] GHC.Types.Int | |
Rule fired | |
Rule: Class op /= | |
Before: GHC.Classes./= | |
TyArg GHC.Types.Int | |
ValArg GHC.Classes.$fEqInt | |
ValArg GHC.List.length | |
@ GHC.Integer.Type.Integer | |
(GHC.Base.build | |
@ GHC.Integer.Type.Integer | |
(\ (@ a_d2iw) | |
(c_d2ix [OS=OneShot] | |
:: GHC.Integer.Type.Integer -> a_d2iw -> a_d2iw) | |
(n_d2iy [OS=OneShot] :: a_d2iw) -> | |
c_d2ix 1 (c_d2ix 2 (c_d2ix 3 n_d2iy)))) | |
ValArg GHC.Types.I# 0# | |
After: GHC.Classes.neInt | |
Cont: Stop[BoringCtxt] GHC.Types.Bool | |
Rule fired | |
Rule: length | |
Before: GHC.List.length | |
TyArg GHC.Integer.Type.Integer | |
ValArg GHC.Base.build | |
@ GHC.Integer.Type.Integer | |
(\ (@ a_d2iw) | |
(c_d2ix [OS=OneShot] | |
:: GHC.Integer.Type.Integer -> a_d2iw -> a_d2iw) | |
(n_d2iy [OS=OneShot] :: a_d2iw) -> | |
c_d2ix 1 (c_d2ix 2 (c_d2ix 3 n_d2iy))) | |
After: (\ (@ x_a2nt) (xs_a2nu [Occ=Once] :: [x_a2nt]) -> | |
GHC.Base.foldr | |
@ x_a2nt | |
@ (GHC.Types.Int -> GHC.Types.Int) | |
(GHC.List.lengthFB @ x_a2nt) | |
GHC.List.idLength | |
xs_a2nu | |
(GHC.Types.I# 0#)) | |
@ GHC.Integer.Type.Integer | |
(GHC.Base.build | |
@ GHC.Integer.Type.Integer | |
(\ (@ a_d2iw) | |
(c_d2ix [OS=OneShot] | |
:: GHC.Integer.Type.Integer -> a_d2iw -> a_d2iw) | |
(n_d2iy [OS=OneShot] :: a_d2iw) -> | |
c_d2ix 1 (c_d2ix 2 (c_d2ix 3 n_d2iy)))) | |
Cont: StrictArg GHC.Classes.neInt | |
ApplyToVal nodup (GHC.Types.I# 0#) | |
Stop[BoringCtxt] GHC.Types.Bool | |
Rule fired | |
Rule: fold/build | |
Before: GHC.Base.foldr | |
TyArg GHC.Integer.Type.Integer | |
TyArg GHC.Types.Int -> GHC.Types.Int | |
ValArg GHC.List.lengthFB @ GHC.Integer.Type.Integer | |
ValArg GHC.List.idLength | |
ValArg GHC.Base.build | |
@ GHC.Integer.Type.Integer | |
(\ (@ a_X2iH) | |
(c_X2iJ [OS=OneShot] | |
:: GHC.Integer.Type.Integer -> a_X2iH -> a_X2iH) | |
(n_X2iL [OS=OneShot] :: a_X2iH) -> | |
c_X2iJ 1 (c_X2iJ 2 (c_X2iJ 3 n_X2iL))) | |
ValArg GHC.Types.I# 0# | |
After: (\ (@ a_a2nU) | |
(@ b_a2nV) | |
(k_a2nW [Occ=Once] :: a_a2nU -> b_a2nV -> b_a2nV) | |
(z_a2nX [Occ=Once] :: b_a2nV) | |
(g_a2nY [Occ=Once!] | |
:: forall b1_a2nZ. | |
(a_a2nU -> b1_a2nZ -> b1_a2nZ) -> b1_a2nZ -> b1_a2nZ) -> | |
g_a2nY @ b_a2nV k_a2nW z_a2nX) | |
@ GHC.Integer.Type.Integer | |
@ (GHC.Types.Int -> GHC.Types.Int) | |
(GHC.List.lengthFB @ GHC.Integer.Type.Integer) | |
GHC.List.idLength | |
(\ (@ a_X2iH) | |
(c_X2iJ [OS=OneShot] | |
:: GHC.Integer.Type.Integer -> a_X2iH -> a_X2iH) | |
(n_X2iL [OS=OneShot] :: a_X2iH) -> | |
c_X2iJ 1 (c_X2iJ 2 (c_X2iJ 3 n_X2iL))) | |
Cont: StrictArg GHC.Classes.neInt | |
ApplyToVal nodup (GHC.Types.I# 0#) | |
Stop[BoringCtxt] GHC.Types.Bool | |
Rule fired | |
Rule: Class op show | |
Before: GHC.Show.show | |
TyArg GHC.Types.Bool | |
ValArg GHC.Show.$fShowBool | |
ValArg GHC.Classes.neInt | |
(GHC.List.lengthFB | |
@ GHC.Integer.Type.Integer | |
1 | |
(GHC.List.lengthFB | |
@ GHC.Integer.Type.Integer | |
2 | |
(GHC.List.lengthFB @ GHC.Integer.Type.Integer 3 GHC.List.idLength)) | |
(GHC.Types.I# 0#)) | |
(GHC.Types.I# 0#) | |
After: GHC.Show.$fShowBool_$cshow | |
Cont: Stop[BoringCtxt] GHC.Base.String | |
Rule fired | |
Rule: /=# | |
Before: GHC.Prim./=# ValArg x_a2nn ValArg 0# | |
After: case x_a2nn of _ [Occ=Dead] { | |
__DEFAULT -> 1#; | |
0# -> 0# | |
} | |
Cont: StrictArg GHC.Prim.tagToEnum# | |
Select nodup wild_a2Ld | |
Stop[BoringCtxt] GHC.Base.String | |
Rule fired | |
Rule: tagToEnum# | |
Before: GHC.Prim.tagToEnum# TyArg GHC.Types.Bool ValArg 1# | |
After: GHC.Types.True | |
Cont: Select ok wild_a2Ld | |
Stop[BoringCtxt] GHC.Base.String | |
Rule fired | |
Rule: tagToEnum# | |
Before: GHC.Prim.tagToEnum# TyArg GHC.Types.Bool ValArg 0# | |
After: GHC.Types.False | |
Cont: Select ok wild_a2Ld | |
Stop[BoringCtxt] GHC.Base.String | |
Rule fired | |
Rule: +# | |
Before: GHC.Prim.+# ValArg 0# ValArg 1# | |
After: 1# | |
Cont: StrictArg GHC.Types.I# | |
Select nodup a1_a2nQ | |
Select nodup wild_a2nl | |
Stop[BoringCtxt] GHC.Base.String | |
Rule fired | |
Rule: +# | |
Before: GHC.Prim.+# ValArg 1# ValArg 1# | |
After: 2# | |
Cont: StrictArg GHC.Types.I# | |
Select nodup a1_a2nQ | |
Select nodup wild_a2nl | |
Stop[BoringCtxt] GHC.Base.String | |
Rule fired | |
Rule: +# | |
Before: GHC.Prim.+# ValArg 2# ValArg 1# | |
After: 3# | |
Cont: StrictArg GHC.Types.I# | |
Select nodup wild_a2nl | |
Stop[BoringCtxt] GHC.Base.String |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment