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