Generate Typeable info at definition sites
[ghc.git] / testsuite / tests / simplCore / should_compile / spec-inline.stderr
1
2 ==================== Tidy Core ====================
3 Result size of Tidy Core = {terms: 172, types: 64, coercions: 0}
4
5 -- RHS size: {terms: 2, types: 0, coercions: 0}
6 Roman.$trModule2 :: TrName
7 [GblId,
8  Caf=NoCafRefs,
9  Str=DmdType m1,
10  Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True,
11          WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 30 20}]
12 Roman.$trModule2 = TrNameS "main"#
13
14 -- RHS size: {terms: 2, types: 0, coercions: 0}
15 Roman.$trModule1 :: TrName
16 [GblId,
17  Caf=NoCafRefs,
18  Str=DmdType m1,
19  Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True,
20          WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 40 20}]
21 Roman.$trModule1 = TrNameS "Roman"#
22
23 -- RHS size: {terms: 3, types: 0, coercions: 0}
24 Roman.$trModule :: Module
25 [GblId[ReflectionId],
26  Caf=NoCafRefs,
27  Str=DmdType m,
28  Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True,
29          WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 30}]
30 Roman.$trModule = Module Roman.$trModule2 Roman.$trModule1
31
32 -- RHS size: {terms: 2, types: 1, coercions: 0}
33 Roman.foo3 :: Int
34 [GblId, Str=DmdType b]
35 Roman.foo3 =
36   patError @ Int "spec-inline.hs:(19,5)-(29,25)|function go"#
37
38 Rec {
39 -- RHS size: {terms: 55, types: 9, coercions: 0}
40 Roman.foo_$s$wgo [Occ=LoopBreaker] :: Int# -> Int# -> Int#
41 [GblId, Arity=2, Caf=NoCafRefs, Str=DmdType <L,U><L,U>]
42 Roman.foo_$s$wgo =
43   \ (sc :: Int#) (sc1 :: Int#) ->
44     let {
45       a :: Int#
46       [LclId, Str=DmdType]
47       a = +# (+# (+# (+# (+# (+# sc1 sc1) sc1) sc1) sc1) sc1) sc1 } in
48     case tagToEnum# @ Bool (<=# sc 0#) of _ [Occ=Dead] {
49       False ->
50         case tagToEnum# @ Bool (<# sc 100#) of _ [Occ=Dead] {
51           False ->
52             case tagToEnum# @ Bool (<# sc 500#) of _ [Occ=Dead] {
53               False -> Roman.foo_$s$wgo (-# sc 1#) (+# a a);
54               True -> Roman.foo_$s$wgo (-# sc 3#) a
55             };
56           True -> Roman.foo_$s$wgo (-# sc 2#) sc1
57         };
58       True -> 0#
59     }
60 end Rec }
61
62 -- RHS size: {terms: 74, types: 22, coercions: 0}
63 Roman.$wgo [InlPrag=[0]] :: Maybe Int -> Maybe Int -> Int#
64 [GblId,
65  Arity=2,
66  Str=DmdType <S,1*U><S,1*U>,
67  Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True,
68          WorkFree=True, Expandable=True, Guidance=IF_ARGS [60 30] 256 0}]
69 Roman.$wgo =
70   \ (w :: Maybe Int) (w1 :: Maybe Int) ->
71     case w1 of _ [Occ=Dead] {
72       Nothing -> case Roman.foo3 of wild1 { };
73       Just x ->
74         case x of _ [Occ=Dead] { I# ipv ->
75         let {
76           a :: Int#
77           [LclId, Str=DmdType]
78           a = +# (+# (+# (+# (+# (+# ipv ipv) ipv) ipv) ipv) ipv) ipv } in
79         case w of _ [Occ=Dead] {
80           Nothing -> Roman.foo_$s$wgo 10# a;
81           Just n ->
82             case n of _ [Occ=Dead] { I# x2 ->
83             case tagToEnum# @ Bool (<=# x2 0#) of _ [Occ=Dead] {
84               False ->
85                 case tagToEnum# @ Bool (<# x2 100#) of _ [Occ=Dead] {
86                   False ->
87                     case tagToEnum# @ Bool (<# x2 500#) of _ [Occ=Dead] {
88                       False -> Roman.foo_$s$wgo (-# x2 1#) (+# a a);
89                       True -> Roman.foo_$s$wgo (-# x2 3#) a
90                     };
91                   True -> Roman.foo_$s$wgo (-# x2 2#) ipv
92                 };
93               True -> 0#
94             }
95             }
96         }
97         }
98     }
99
100 -- RHS size: {terms: 9, types: 5, coercions: 0}
101 Roman.foo_go [InlPrag=INLINE[0]] :: Maybe Int -> Maybe Int -> Int
102 [GblId,
103  Arity=2,
104  Str=DmdType <S,1*U><S,1*U>m,
105  Unf=Unf{Src=InlineStable, TopLvl=True, Value=True, ConLike=True,
106          WorkFree=True, Expandable=True,
107          Guidance=ALWAYS_IF(arity=2,unsat_ok=True,boring_ok=False)
108          Tmpl= \ (w [Occ=Once] :: Maybe Int) (w1 [Occ=Once] :: Maybe Int) ->
109                  case Roman.$wgo w w1 of ww { __DEFAULT -> I# ww }}]
110 Roman.foo_go =
111   \ (w :: Maybe Int) (w1 :: Maybe Int) ->
112     case Roman.$wgo w w1 of ww { __DEFAULT -> I# ww }
113
114 -- RHS size: {terms: 2, types: 0, coercions: 0}
115 Roman.foo2 :: Int
116 [GblId,
117  Caf=NoCafRefs,
118  Str=DmdType m,
119  Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True,
120          WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 20}]
121 Roman.foo2 = I# 6#
122
123 -- RHS size: {terms: 2, types: 1, coercions: 0}
124 Roman.foo1 :: Maybe Int
125 [GblId,
126  Caf=NoCafRefs,
127  Str=DmdType m2,
128  Unf=Unf{Src=<vanilla>, TopLvl=True, Value=True, ConLike=True,
129          WorkFree=True, Expandable=True, Guidance=IF_ARGS [] 10 20}]
130 Roman.foo1 = Just @ Int Roman.foo2
131
132 -- RHS size: {terms: 11, types: 4, coercions: 0}
133 foo :: Int -> Int
134 [GblId,
135  Arity=1,
136  Caf=NoCafRefs,
137  Str=DmdType <S,1*U(U)>m,
138  Unf=Unf{Src=InlineStable, TopLvl=True, Value=True, ConLike=True,
139          WorkFree=True, Expandable=True,
140          Guidance=ALWAYS_IF(arity=1,unsat_ok=True,boring_ok=False)
141          Tmpl= \ (n [Occ=Once!] :: Int) ->
142                  case n of n1 { I# _ [Occ=Dead] ->
143                  Roman.foo_go (Just @ Int n1) Roman.foo1
144                  }}]
145 foo =
146   \ (n :: Int) ->
147     case n of _ [Occ=Dead] { I# ipv ->
148     case Roman.foo_$s$wgo ipv 6# of ww { __DEFAULT -> I# ww }
149     }
150
151
152 ------ Local rules for imported ids --------
153 "SC:$wgo0" [0]
154     forall (sc :: Int#) (sc1 :: Int#).
155       Roman.$wgo (Just @ Int (I# sc)) (Just @ Int (I# sc1))
156       = Roman.foo_$s$wgo sc sc1
157
158