Skip to content

Instantly share code, notes, and snippets.

@phadej
Created August 1, 2019 07:13
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save phadej/2e0680ef9e1005fda8b1d401111f36ac to your computer and use it in GitHub Desktop.
Save phadej/2e0680ef9e1005fda8b1d401111f36ac to your computer and use it in GitHub Desktop.
Look what I have down. Compare normalFoo and exposeFoo (and inlinableFoo)
{-# OPTIONS_GHC -funfolding-creation-threshold=2 #-}
module Inline (inlineFoo, inlinableFoo, exposeFoo, normalFoo) where
import System.IO.Unsafe (unsafePerformIO)
{-
data IfaceUnfolding
= IfCoreUnfold Bool IfaceExpr -- True <=> INLINABLE, False <=> regular unfolding
-- Possibly could eliminate the Bool here, the information
-- is also in the InlinePragma.
| IfCompulsory IfaceExpr -- Only used for default methods, in fact
| IfInlineRule Arity -- INLINE pragmas
Bool -- OK to inline even if *un*-saturated
Bool -- OK to inline even if context is boring
IfaceExpr
| IfDFunUnfold [IfaceBndr] [IfaceExpr]
-}
-- ghc -c -Wall Inline.hs -ddump-hi -ddump-hi-diffs -fforce-recomp -O -ddump-simpl
data Foo a = Foo a a
plus :: Num a => Foo a -> Foo a -> Foo a
plus (Foo u x) (Foo v y) = Foo (u + v) (x + y)
inlineFoo :: Num a => Foo a -> Foo a -> Foo a
inlineFoo x y = plus x y
{-# INLINE inlineFoo #-}
inlinableFoo :: Num a => Foo a -> Foo a -> Foo a
inlinableFoo x y = plus x y
{-# INLINABLE inlinableFoo #-}
exposeFoo :: Num a => Foo a -> Foo a -> Foo a
exposeFoo x y = plus (plus (plus x y) (plus x y)) (plus (plus x y) (plus x y))
{-# EXPOSE exposeFoo #-}
normalFoo :: Num a => Foo a -> Foo a -> Foo a
normalFoo x y = plus (plus (plus y x) (plus x y)) (plus (plus x y) (plus x y))
==================== FINAL INTERFACE ====================
interface main:Inline 808020190723
interface hash: 9f0f2cff216a5fb4bfeda2dda2f3c060
ABI hash: fdfa93f448250291a525cf6477072c64
export-list hash: a80cd0e3c2c42239f011798a97113648
orphan hash: 693e9af84d3dfcc71e640e005bdc5e2e
flag hash: eb42850e3475040cf16f9870b09ef313
opt_hash: 38f3f0d46aaf5d285b4b79cdc5c15af5
hpc_hash: 93b885adfe0da089cdf634904fd59f71
plugin_hash: ad164012d6b1e14942349d58b1132007
sig of: Nothing
used TH splices: False
where
exports:
Inline.exposeFoo
Inline.inlinableFoo
Inline.inlineFoo
Inline.normalFoo
module dependencies:
package dependencies: base-4.13.0.0 ghc-prim-0.5.3
integer-gmp-1.0.2.0
orphans: base-4.13.0.0:GHC.Float base-4.13.0.0:GHC.Base
family instance modules: base-4.13.0.0:Control.Applicative
base-4.13.0.0:Data.Functor.Const
base-4.13.0.0:Data.Functor.Identity base-4.13.0.0:Data.Monoid
base-4.13.0.0:Data.Semigroup.Internal base-4.13.0.0:GHC.Generics
base-4.13.0.0:GHC.IO.Exception
import -/ base-4.13.0.0:GHC.Num 886b53b0c06d95db9bfdb7ddba6c7bb0
import -/ base-4.13.0.0:Prelude c7b71d154b256714e240fc6f62ee962e
import -/ base-4.13.0.0:System.IO.Unsafe 4b5d02d0b36b59763d7a0b0f4be9e272
e05fd708aa162b82f84d9eac3587c370
$tc'Foo :: GHC.Types.TyCon
{- HasNoCafRefs, Strictness: m,
Unfolding: (GHC.Types.TyCon
15544478429845824780##
6938139519567767639##
Inline.$trModule
Inline.$tc'Foo2
1#
Inline.$tc'Foo1) -}
631a3b389a34f30d822cd51c2f075ce8
$tc'Foo1 :: GHC.Types.KindRep
{- HasNoCafRefs, Strictness: m4, Inline: [~] -}
6bb949791994ec60c61e16e11753b16b
$tc'Foo2 :: GHC.Types.TrName
{- HasNoCafRefs, Strictness: m1,
Unfolding: (GHC.Types.TrNameS Inline.$tc'Foo3) -}
71493233982ec1672c4512831cd22e15
$tc'Foo3 :: GHC.Prim.Addr#
{- HasNoCafRefs, Unfolding: ("'Foo"#) -}
ce51fe9e64ecc3e2fff9781e46dd627e
$tcFoo :: GHC.Types.TyCon
{- HasNoCafRefs, Strictness: m,
Unfolding: (GHC.Types.TyCon
13023494399417359199##
18085582302605504116##
Inline.$trModule
Inline.$tcFoo1
0#
GHC.Types.krep$*Arr*) -}
4b4aa867ad880fe2e0c5bbf8b5541ca2
$tcFoo1 :: GHC.Types.TrName
{- HasNoCafRefs, Strictness: m1,
Unfolding: (GHC.Types.TrNameS Inline.$tcFoo2) -}
56afc8c26d78a2de705f4e78fb48af3f
$tcFoo2 :: GHC.Prim.Addr#
{- HasNoCafRefs, Unfolding: ("Foo"#) -}
2046f188992bb184f93fbe31e0a136ff
$trModule :: GHC.Types.Module
{- HasNoCafRefs, Strictness: m,
Unfolding: (GHC.Types.Module
Inline.$trModule3
Inline.$trModule1) -}
d8059ad99b795d05f64657ef0b607140
$trModule1 :: GHC.Types.TrName
{- HasNoCafRefs, Strictness: m1,
Unfolding: (GHC.Types.TrNameS Inline.$trModule2) -}
8f1a7dafd7a95e5177881dd4c36f160b
$trModule2 :: GHC.Prim.Addr#
{- HasNoCafRefs, Unfolding: ("Inline"#) -}
f7b9bea5b70a5ed56376203a589ddd3d
$trModule3 :: GHC.Types.TrName
{- HasNoCafRefs, Strictness: m1,
Unfolding: (GHC.Types.TrNameS Inline.$trModule4) -}
bfd2d9db6c7052701e4ebf9081fa56c7
$trModule4 :: GHC.Prim.Addr#
{- HasNoCafRefs, Unfolding: ("main"#) -}
bac29101f5261e4e8b70610ee41d0bfa
$wexposeFoo :: GHC.Num.Num a => a -> a -> a -> a -> (# a, a #)
{- Arity: 5, HasNoCafRefs,
Strictness: <L,U(C(C1(U)),A,A,A,A,A,A)><L,U><L,U><L,U><L,U>,
Inline: [2],
Unfolding: (\ @ a
(w :: GHC.Num.Num a)
(ww :: a)
(ww1 :: a)
(ww2 :: a)
(ww3 :: a) ->
case Inline.$wplus @ a w ww ww1 ww2 ww3 of ww4 { (#,#) ww5 ww6 ->
case Inline.$wplus @ a w ww5 ww6 ww5 ww6 of ww7 { (#,#) ww8 ww9 ->
case Inline.$wplus
@ a
w
ww5
ww6
ww5
ww6 of ww10 { (#,#) ww11 ww12 ->
Inline.$wplus @ a w ww8 ww9 ww11 ww12 } } }) -}
89bdb8af8d6db50df831c5aa17376158
$wnormalFoo :: GHC.Num.Num a => a -> a -> a -> a -> (# a, a #)
{- Arity: 5, HasNoCafRefs,
Strictness: <L,U(C(C1(U)),A,A,A,A,A,A)><L,U><L,U><L,U><L,U>,
Inline: [2] -}
68d86dce65b522504e050670b71cde9a
$wplus :: GHC.Num.Num a => a -> a -> a -> a -> (# a, a #)
{- Arity: 5, HasNoCafRefs,
Strictness: <L,U(C(C1(U)),A,A,A,A,A,A)><L,U><L,U><L,U><L,U>,
Inline: [2] -}
0e1a5771f4441bc98db78adb90c70b8d
data Foo a = Foo a a
74f0e267ca8731798053ec0860cc378c
exposeFoo ::
GHC.Num.Num a => Inline.Foo a -> Inline.Foo a -> Inline.Foo a
{- Arity: 3, HasNoCafRefs,
Strictness: <L,U(C(C1(U)),A,A,A,A,A,A)><S,1*U(U,U)><S,1*U(U,U)>m,
Inline: [2],
Unfolding: InlineRule (3, True, False)
(\ @ a
(w :: GHC.Num.Num a)
(w1 :: Inline.Foo a)
(w2 :: Inline.Foo a) ->
case w1 of ww { Inline.Foo ww1 ww2 ->
case w2 of ww3 { Inline.Foo ww4 ww5 ->
case Inline.$wexposeFoo
@ a
w
ww1
ww2
ww4
ww5 of ww6 { (#,#) ww7 ww8 ->
Inline.Foo @ a ww7 ww8 } } }) -}
b13831f9c865fb6118db28be6064fea4
inlinableFoo ::
GHC.Num.Num a => Inline.Foo a -> Inline.Foo a -> Inline.Foo a
{- Arity: 3, HasNoCafRefs,
Strictness: <L,U(C(C1(U)),A,A,A,A,A,A)><S,1*U(U,U)><S,1*U(U,U)>m,
Inline:, Unfolding: InlineRule (0, True, True) Inline.plus -}
edd966ac0d804064080eb25aa5a6283b
inlineFoo ::
GHC.Num.Num a => Inline.Foo a -> Inline.Foo a -> Inline.Foo a
{- Arity: 3, HasNoCafRefs,
Strictness: <L,U(C(C1(U)),A,A,A,A,A,A)><S,1*U(U,U)><S,1*U(U,U)>m,
Inline: (sat-args=2),
Unfolding: InlineRule (3, False, True) Inline.plus -}
a3d3703ab991c1aa69bcc539aaeb45a8
normalFoo ::
GHC.Num.Num a => Inline.Foo a -> Inline.Foo a -> Inline.Foo a
{- Arity: 3, HasNoCafRefs,
Strictness: <L,U(C(C1(U)),A,A,A,A,A,A)><S,1*U(U,U)><S,1*U(U,U)>m,
Inline: [2],
Unfolding: InlineRule (3, True, False)
(\ @ a
(w :: GHC.Num.Num a)
(w1 :: Inline.Foo a)
(w2 :: Inline.Foo a) ->
case w1 of ww { Inline.Foo ww1 ww2 ->
case w2 of ww3 { Inline.Foo ww4 ww5 ->
case Inline.$wnormalFoo
@ a
w
ww1
ww2
ww4
ww5 of ww6 { (#,#) ww7 ww8 ->
Inline.Foo @ a ww7 ww8 } } }) -}
16ac205e26968606075b1b5ecbcdb29b
plus ::
GHC.Num.Num a => Inline.Foo a -> Inline.Foo a -> Inline.Foo a
{- Arity: 3, HasNoCafRefs,
Strictness: <L,U(C(C1(U)),A,A,A,A,A,A)><S,1*U(U,U)><S,1*U(U,U)>m,
Inline: [2],
Unfolding: InlineRule (3, True, False)
(\ @ a
(w :: GHC.Num.Num a)
(w1 :: Inline.Foo a)
(w2 :: Inline.Foo a) ->
case w1 of ww { Inline.Foo ww1 ww2 ->
case w2 of ww3 { Inline.Foo ww4 ww5 ->
case Inline.$wplus @ a w ww1 ww2 ww4 ww5 of ww6 { (#,#) ww7 ww8 ->
Inline.Foo @ a ww7 ww8 } } }) -}
trusted: none
require own pkg trusted: False
module header:
Nothing
declaration docs:
arg docs:
==================== Tidy Core ====================
Result size of Tidy Core
= {terms: 227, types: 271, coercions: 0, joins: 0/0}
-- RHS size: {terms: 15, types: 14, coercions: 0, joins: 0/0}
Inline.$wplus [InlPrag=NOUSERINLINE[2]]
:: forall a. Num a => a -> a -> a -> a -> (# a, a #)
[GblId,
Arity=5,
Caf=NoCafRefs,
Str=<L,U(C(C1(U)),A,A,A,A,A,A)><L,U><L,U><L,U><L,U>,
Unf=OtherCon []]
Inline.$wplus
= \ (@ a_s1hz)
(w_s1hA :: Num a_s1hz)
(ww_s1hF :: a_s1hz)
(ww1_s1hG :: a_s1hz)
(ww2_s1hK :: a_s1hz)
(ww3_s1hL :: a_s1hz) ->
(# + @ a_s1hz w_s1hA ww_s1hF ww2_s1hK,
+ @ a_s1hz w_s1hA ww1_s1hG ww3_s1hL #)
-- RHS size: {terms: 21, types: 25, coercions: 0, joins: 0/0}
plus [InlPrag=NOUSERINLINE[2]]
:: forall a. Num a => Foo a -> Foo a -> Foo a
[GblId,
Arity=3,
Caf=NoCafRefs,
Str=<L,U(C(C1(U)),A,A,A,A,A,A)><S,1*U(U,U)><S,1*U(U,U)>m,
Unf=Unf{Src=InlineStable, TopLvl=True, Value=True, ConLike=True,
WorkFree=True, Expandable=True,
Guidance=ALWAYS_IF(arity=3,unsat_ok=True,boring_ok=False)
Tmpl= \ (@ a_s1hz)
(w_s1hA [Occ=Once] :: Num a_s1hz)
(w1_s1hB [Occ=Once!] :: Foo a_s1hz)
(w2_s1hC [Occ=Once!] :: Foo a_s1hz) ->
case w1_s1hB of { Foo ww1_s1hF [Occ=Once] ww2_s1hG [Occ=Once] ->
case w2_s1hC of { Foo ww4_s1hK [Occ=Once] ww5_s1hL [Occ=Once] ->
case Inline.$wplus
@ a_s1hz w_s1hA ww1_s1hF ww2_s1hG ww4_s1hK ww5_s1hL
of
{ (# ww7_s1ir [Occ=Once], ww8_s1is [Occ=Once] #) ->
Inline.Foo @ a_s1hz ww7_s1ir ww8_s1is
}
}
}}]
plus
= \ (@ a_s1hz)
(w_s1hA :: Num a_s1hz)
(w1_s1hB :: Foo a_s1hz)
(w2_s1hC :: Foo a_s1hz) ->
case w1_s1hB of { Foo ww1_s1hF ww2_s1hG ->
case w2_s1hC of { Foo ww4_s1hK ww5_s1hL ->
case Inline.$wplus
@ a_s1hz w_s1hA ww1_s1hF ww2_s1hG ww4_s1hK ww5_s1hL
of
{ (# ww7_s1ir, ww8_s1is #) ->
Inline.Foo @ a_s1hz ww7_s1ir ww8_s1is
}
}
}
-- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
inlineFoo [InlPrag=INLINE (sat-args=2)]
:: forall a. Num a => Foo a -> Foo a -> Foo a
[GblId,
Arity=3,
Caf=NoCafRefs,
Str=<L,U(C(C1(U)),A,A,A,A,A,A)><S,1*U(U,U)><S,1*U(U,U)>m,
Unf=Unf{Src=InlineStable, TopLvl=True, Value=True, ConLike=True,
WorkFree=True, Expandable=True,
Guidance=ALWAYS_IF(arity=3,unsat_ok=False,boring_ok=True)
Tmpl= plus}]
inlineFoo = plus
-- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
inlinableFoo [InlPrag=INLINABLE]
:: forall a. Num a => Foo a -> Foo a -> Foo a
[GblId,
Arity=3,
Caf=NoCafRefs,
Str=<L,U(C(C1(U)),A,A,A,A,A,A)><S,1*U(U,U)><S,1*U(U,U)>m,
Unf=Unf{Src=InlineStable, TopLvl=True, Value=True, ConLike=True,
WorkFree=True, Expandable=True,
Guidance=ALWAYS_IF(arity=0,unsat_ok=True,boring_ok=True)
Tmpl= plus}]
inlinableFoo = plus
-- RHS size: {terms: 36, types: 33, coercions: 0, joins: 0/0}
Inline.$wexposeFoo [InlPrag=EXPOSE[2]]
:: forall a. Num a => a -> a -> a -> a -> (# a, a #)
[GblId,
Arity=5,
Caf=NoCafRefs,
Str=<L,U(C(C1(U)),A,A,A,A,A,A)><L,U><L,U><L,U><L,U>,
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True,
WorkFree=True, Expandable=True, Guidance=NEVER}]
Inline.$wexposeFoo
= \ (@ a_s1hR)
(w_s1hS :: Num a_s1hR)
(ww_s1hX :: a_s1hR)
(ww1_s1hY :: a_s1hR)
(ww2_s1i2 :: a_s1hR)
(ww3_s1i3 :: a_s1hR) ->
case Inline.$wplus
@ a_s1hR w_s1hS ww_s1hX ww1_s1hY ww2_s1i2 ww3_s1i3
of
{ (# ww5_s1ir, ww6_s1is #) ->
case Inline.$wplus
@ a_s1hR w_s1hS ww5_s1ir ww6_s1is ww5_s1ir ww6_s1is
of
{ (# ww8_X1jt, ww9_X1jv #) ->
case Inline.$wplus
@ a_s1hR w_s1hS ww5_s1ir ww6_s1is ww5_s1ir ww6_s1is
of
{ (# ww11_X1jW, ww12_X1jY #) ->
Inline.$wplus @ a_s1hR w_s1hS ww8_X1jt ww9_X1jv ww11_X1jW ww12_X1jY
}
}
}
-- RHS size: {terms: 21, types: 25, coercions: 0, joins: 0/0}
exposeFoo [InlPrag=NOUSERINLINE[2]]
:: forall a. Num a => Foo a -> Foo a -> Foo a
[GblId,
Arity=3,
Caf=NoCafRefs,
Str=<L,U(C(C1(U)),A,A,A,A,A,A)><S,1*U(U,U)><S,1*U(U,U)>m,
Unf=Unf{Src=InlineStable, TopLvl=True, Value=True, ConLike=True,
WorkFree=True, Expandable=True,
Guidance=ALWAYS_IF(arity=3,unsat_ok=True,boring_ok=False)
Tmpl= \ (@ a_s1hR)
(w_s1hS [Occ=Once] :: Num a_s1hR)
(w1_s1hT [Occ=Once!] :: Foo a_s1hR)
(w2_s1hU [Occ=Once!] :: Foo a_s1hR) ->
case w1_s1hT of { Foo ww1_s1hX [Occ=Once] ww2_s1hY [Occ=Once] ->
case w2_s1hU of { Foo ww4_s1i2 [Occ=Once] ww5_s1i3 [Occ=Once] ->
case Inline.$wexposeFoo
@ a_s1hR w_s1hS ww1_s1hX ww2_s1hY ww4_s1i2 ww5_s1i3
of
{ (# ww7_s1iu [Occ=Once], ww8_s1iv [Occ=Once] #) ->
Inline.Foo @ a_s1hR ww7_s1iu ww8_s1iv
}
}
}}]
exposeFoo
= \ (@ a_s1hR)
(w_s1hS :: Num a_s1hR)
(w1_s1hT :: Foo a_s1hR)
(w2_s1hU :: Foo a_s1hR) ->
case w1_s1hT of { Foo ww1_s1hX ww2_s1hY ->
case w2_s1hU of { Foo ww4_s1i2 ww5_s1i3 ->
case Inline.$wexposeFoo
@ a_s1hR w_s1hS ww1_s1hX ww2_s1hY ww4_s1i2 ww5_s1i3
of
{ (# ww7_s1iu, ww8_s1iv #) ->
Inline.Foo @ a_s1hR ww7_s1iu ww8_s1iv
}
}
}
-- RHS size: {terms: 44, types: 41, coercions: 0, joins: 0/0}
Inline.$wnormalFoo [InlPrag=NOUSERINLINE[2]]
:: forall a. Num a => a -> a -> a -> a -> (# a, a #)
[GblId,
Arity=5,
Caf=NoCafRefs,
Str=<L,U(C(C1(U)),A,A,A,A,A,A)><L,U><L,U><L,U><L,U>,
Unf=OtherCon []]
Inline.$wnormalFoo
= \ (@ a_s1i9)
(w_s1ia :: Num a_s1i9)
(ww_s1if :: a_s1i9)
(ww1_s1ig :: a_s1i9)
(ww2_s1ik :: a_s1i9)
(ww3_s1il :: a_s1i9) ->
case Inline.$wplus
@ a_s1i9 w_s1ia ww2_s1ik ww3_s1il ww_s1if ww1_s1ig
of
{ (# ww5_s1ir, ww6_s1is #) ->
case Inline.$wplus
@ a_s1i9 w_s1ia ww_s1if ww1_s1ig ww2_s1ik ww3_s1il
of
{ (# ww8_X1jo, ww9_X1jq #) ->
case Inline.$wplus
@ a_s1i9 w_s1ia ww5_s1ir ww6_s1is ww8_X1jo ww9_X1jq
of
{ (# ww11_X1jv, ww12_X1jx #) ->
case Inline.$wplus
@ a_s1i9 w_s1ia ww8_X1jo ww9_X1jq ww8_X1jo ww9_X1jq
of
{ (# ww14_X1jY, ww15_X1k0 #) ->
Inline.$wplus
@ a_s1i9 w_s1ia ww11_X1jv ww12_X1jx ww14_X1jY ww15_X1k0
}
}
}
}
-- RHS size: {terms: 21, types: 25, coercions: 0, joins: 0/0}
normalFoo [InlPrag=NOUSERINLINE[2]]
:: forall a. Num a => Foo a -> Foo a -> Foo a
[GblId,
Arity=3,
Caf=NoCafRefs,
Str=<L,U(C(C1(U)),A,A,A,A,A,A)><S,1*U(U,U)><S,1*U(U,U)>m,
Unf=Unf{Src=InlineStable, TopLvl=True, Value=True, ConLike=True,
WorkFree=True, Expandable=True,
Guidance=ALWAYS_IF(arity=3,unsat_ok=True,boring_ok=False)
Tmpl= \ (@ a_s1i9)
(w_s1ia [Occ=Once] :: Num a_s1i9)
(w1_s1ib [Occ=Once!] :: Foo a_s1i9)
(w2_s1ic [Occ=Once!] :: Foo a_s1i9) ->
case w1_s1ib of { Foo ww1_s1if [Occ=Once] ww2_s1ig [Occ=Once] ->
case w2_s1ic of { Foo ww4_s1ik [Occ=Once] ww5_s1il [Occ=Once] ->
case Inline.$wnormalFoo
@ a_s1i9 w_s1ia ww1_s1if ww2_s1ig ww4_s1ik ww5_s1il
of
{ (# ww7_s1ix [Occ=Once], ww8_s1iy [Occ=Once] #) ->
Inline.Foo @ a_s1i9 ww7_s1ix ww8_s1iy
}
}
}}]
normalFoo
= \ (@ a_s1i9)
(w_s1ia :: Num a_s1i9)
(w1_s1ib :: Foo a_s1i9)
(w2_s1ic :: Foo a_s1i9) ->
case w1_s1ib of { Foo ww1_s1if ww2_s1ig ->
case w2_s1ic of { Foo ww4_s1ik ww5_s1il ->
case Inline.$wnormalFoo
@ a_s1i9 w_s1ia ww1_s1if ww2_s1ig ww4_s1ik ww5_s1il
of
{ (# ww7_s1ix, ww8_s1iy #) ->
Inline.Foo @ a_s1i9 ww7_s1ix ww8_s1iy
}
}
}
-- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
Inline.$trModule4 :: GHC.Prim.Addr#
[GblId,
Caf=NoCafRefs,
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True,
WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 20 0}]
Inline.$trModule4 = "main"#
-- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
Inline.$trModule3 :: GHC.Types.TrName
[GblId,
Caf=NoCafRefs,
Str=m1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True,
WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 20}]
Inline.$trModule3 = GHC.Types.TrNameS Inline.$trModule4
-- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
Inline.$trModule2 :: GHC.Prim.Addr#
[GblId,
Caf=NoCafRefs,
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True,
WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 30 0}]
Inline.$trModule2 = "Inline"#
-- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
Inline.$trModule1 :: GHC.Types.TrName
[GblId,
Caf=NoCafRefs,
Str=m1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True,
WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 20}]
Inline.$trModule1 = GHC.Types.TrNameS Inline.$trModule2
-- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
Inline.$trModule :: GHC.Types.Module
[GblId,
Caf=NoCafRefs,
Str=m,
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True,
WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 30}]
Inline.$trModule
= GHC.Types.Module Inline.$trModule3 Inline.$trModule1
-- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
$krep_r1gx :: GHC.Types.KindRep
[GblId, Caf=NoCafRefs, Str=m2, Unf=OtherCon []]
$krep_r1gx = GHC.Types.KindRepVar 0#
-- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
Inline.$tcFoo2 :: GHC.Prim.Addr#
[GblId,
Caf=NoCafRefs,
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True,
WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 20 0}]
Inline.$tcFoo2 = "Foo"#
-- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
Inline.$tcFoo1 :: GHC.Types.TrName
[GblId,
Caf=NoCafRefs,
Str=m1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True,
WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 20}]
Inline.$tcFoo1 = GHC.Types.TrNameS Inline.$tcFoo2
-- RHS size: {terms: 7, types: 0, coercions: 0, joins: 0/0}
Inline.$tcFoo :: GHC.Types.TyCon
[GblId,
Caf=NoCafRefs,
Str=m,
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True,
WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 70}]
Inline.$tcFoo
= GHC.Types.TyCon
13023494399417359199##
18085582302605504116##
Inline.$trModule
Inline.$tcFoo1
0#
GHC.Types.krep$*Arr*
-- RHS size: {terms: 3, types: 2, coercions: 0, joins: 0/0}
$krep1_r1l0 :: [GHC.Types.KindRep]
[GblId, Caf=NoCafRefs, Str=m2, Unf=OtherCon []]
$krep1_r1l0
= GHC.Types.:
@ GHC.Types.KindRep $krep_r1gx (GHC.Types.[] @ GHC.Types.KindRep)
-- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
$krep2_r1l1 :: GHC.Types.KindRep
[GblId, Caf=NoCafRefs, Str=m1, Unf=OtherCon []]
$krep2_r1l1 = GHC.Types.KindRepTyConApp Inline.$tcFoo $krep1_r1l0
-- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
$krep3_r1l2 :: GHC.Types.KindRep
[GblId, Caf=NoCafRefs, Str=m4, Unf=OtherCon []]
$krep3_r1l2 = GHC.Types.KindRepFun $krep_r1gx $krep2_r1l1
-- RHS size: {terms: 3, types: 0, coercions: 0, joins: 0/0}
Inline.$tc'Foo1 [InlPrag=NOUSERINLINE[~]] :: GHC.Types.KindRep
[GblId, Caf=NoCafRefs, Str=m4, Unf=OtherCon []]
Inline.$tc'Foo1 = GHC.Types.KindRepFun $krep_r1gx $krep3_r1l2
-- RHS size: {terms: 1, types: 0, coercions: 0, joins: 0/0}
Inline.$tc'Foo3 :: GHC.Prim.Addr#
[GblId,
Caf=NoCafRefs,
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True,
WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 20 0}]
Inline.$tc'Foo3 = "'Foo"#
-- RHS size: {terms: 2, types: 0, coercions: 0, joins: 0/0}
Inline.$tc'Foo2 :: GHC.Types.TrName
[GblId,
Caf=NoCafRefs,
Str=m1,
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True,
WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 20}]
Inline.$tc'Foo2 = GHC.Types.TrNameS Inline.$tc'Foo3
-- RHS size: {terms: 7, types: 0, coercions: 0, joins: 0/0}
Inline.$tc'Foo :: GHC.Types.TyCon
[GblId,
Caf=NoCafRefs,
Str=m,
Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True,
WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 70}]
Inline.$tc'Foo
= GHC.Types.TyCon
15544478429845824780##
6938139519567767639##
Inline.$trModule
Inline.$tc'Foo2
1#
Inline.$tc'Foo1
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment